Next.js 7 liberado

O Next.js é um framework React cuja principal meta é fornecer um ótimo desempenho em produção, juntamente com uma ótima experiência de desenvolvedor. Para fornecer essa excelente experiência de desenvolvedor, o Next.js oferece suporte à renderização no lado do servidor, à divisão de código e ao roteamento no lado do cliente.

A equipe Next.js anunciou a versão 7 de sua estrutura React de código aberto. Esta versão do Next.js se concentra em melhorar a experiência geral do desenvolvedor com tempos de inicialização 57% mais rápidos e 40% mais rápido no desenvolvimento, relatórios de erros aprimorados e suporte ao WebAssembly. O Framework baseia-se em muitas ferramentas padrões do ecossistema JavaScript, como o Babel e o Webpack, e, na versão 7, estão versões mais recentes dessas ferramentas. Essas atualizações, juntamente com um novo cache de compilação incremental, significam que as compilações Next.js são agora 40% mais rápidas, um aplicativo básico verá a compilação reduzir de 304ms para 178ms.

Com o upgrade do Webpack, o Next.js 7 se beneficia do novo suporte a .mjs, permitindo que todos os módulos JavaScript comuns, como CommonJS, AMD e ESM, sejam incluídos, mas também suporte para os módulos EcmaScript, JSON e WebAssembly. Ele também inclui a versão mais recente do Babel, que oferece suporte a TypeScript, sintaxe de fragmento e preenchimento automático experimental.

Os tamanhos iniciais de payload em Next.js 7 foram reduzidos em até 7.4%, levando um tamanho de documento nas versões anteriores de Next.js de 1.62kB para 1.50kB. Essas melhorias vieram da equipe Next.js, removendo certos elementos HTML e diminuindo alguns scripts in-line. Outra grande melhoria com o Next.js 7 é seu suporte para a React Context API. A API de Contexto é uma maneira de compartilhar dados entre os componentes do React sem ter que compartilhá-lo explicitamente todas as vezes. Em Next.js isso reduz o uso de memória em 16% devido à capacidade do Next.js de compartilhar código entre as páginas.

É forncido um suporte importação dinâmica de módulos; anteriormente isso não era possível devido ao fato de o Next.js ter rolado sua própria funcionalidade de importação. Eles agora o removeram e suportam a funcionalidade de importação padrão que sai da caixa com o Webpack, permitindo importações dinâmicas, nomeando e agrupando arquivos.

Next.js recebeu muitos elogios dentro da comunidade. reacttricks no Reddit diz: “Eu tenho usado o Next.js exclusivamente para todos os projetos no último ano e meio, eu recomendo que todos experimentem.” Outro feedback inclui confusão sobre o que é Next.js; theineffablebob pergunta: “Em seguida, apenas um framework que inclui tudo que você precisa para colocar o site em funcionamento? É como se fosse um daqueles boilerplates?” Nextjs.org considera-se o PHP do mundo do JavaScript e do React nesta citação de nextjs.org: “Pense em como os webapps são criados com o PHP. Você cria alguns arquivos, escreve código PHP e simplesmente os implementa. Não temos se preocupar com o roteamento, e o aplicativo é renderizado no servidor por padrão. ”

Fonte:

NextJS – Blog

InfoQ (tradução)

 

Uber Anúncia Framework Open Source Fusion.js

O Uber lançou o Fusion.js, um “Framework Web universal” de código aberto. No anúncio, o engenheiro de software Uber Leo Horie explica que o Uber constrói centenas de aplicativos web, e com as tecnologias web mudando rapidamente e as melhores práticas em constante evolução, é um desafio ter centenas de engenheiros web alavancando recursos de linguagem modernos com a natureza dinâmica da plataforma web. O Fusion.js é a solução da Uber para esse problema.

Na avaliação de estruturas, é crucial entender seus objetivos e objetivos para determinar se uma estrutura é adequada para a criação de um aplicativo. Horie explica que o Uber:

Precisava reformular seu antigo framework web monolítico para algo que atendesse aos desafios impostos pelos longos anos de endividamento técnico. No entanto, também queríamos permitir que os engenheiros continuassem usando as tecnologias que eles adoram (por exemplo, React e Redux), mantendo a compatibilidade com a infraestrutura de monitoramento de integridade do aplicativo da Uber.

Para atingir esse objetivo, o Fusion.js aborda os pontos problemáticos identificados pela equipe do Uber:

  • Configuração e templates encontrados ao usar muitas ferramentas para renderização no lado do servidor, divisão de código e recarregamento de módulos.
  • Desafios ao abstrair aspectos da renderização do lado do servidor.
  • Acoplamento de grandes bases de código.
  • Testes quando ocorrem efeitos colaterais.
  • Inflexibilidade geral com estruturas monolíticas.

A equipe da Uber encontrou desafios ao tentar fazer as coisas funcionarem com as soluções existentes, bem como desafios com a internacionalização da integração e outros recursos necessários. Houve também um objetivo principal para evitar abordagens monolíticas ao Fusion.js para manter os tamanhos dos pacotes pequenos.

Horie recomenda o Fusion.js para engenheiros que desejam:

Uma estrutura JavaScript licenciada pelo MIT que suporta bibliotecas populares como React e Redux, e vem com recursos modernos como recarga de módulo, renderização do lado do servidor com reconhecimento de dados e suporte a divisão de pacote.

Uma ênfase significativa é colocada nos aplicativos Fusion.js por serem universais e baseados em plugins. Os aplicativos Fusion.js possuem um único arquivo de ponto de entrada, possibilitando a reutilização de código no servidor e no cliente. Os plugins do Fusion.js são universais, facilitando para os desenvolvedores obter benefícios semelhantes.

Além do React e do Redux, o Fusion.js utiliza o Flow para digitar e o Koa para gerenciamento de middleware. Além de suportar ferramentas de teste como Jest, Enzyme e Puppeteer, o Fusion.js fornece ferramentas para desenvolvedores testarem plugins com o pacote fusion-test-utils.

A arquitetura de plugins e o desejo de evitar uma arquitetura monolítica são um pouco contrários à tendência recente do JavaScript de avançar para monopacks. Com a ampla adoção de módulos ES e ferramentas como o webpack para lidar com a divisão de código, ficou muito mais fácil reduzir os tamanhos dos pacotes sem precisar manter todos os pacotes separados. No entanto, a ênfase da Uber em tamanhos pequenos de pacotes é uma resposta direta aos desafios que a organização de engenharia enfrentou na criação de aplicativos da Web complexos.

O feedback público inicial do projeto é misto, com alguns engenheiros questionando o uso do Flow sobre o TypeScript e alguns se perguntando por que há necessidade de outro framework. É muito cedo para dizer se o Fusion.js ganhará tração fora do Uber, mas é encorajador ver as organizações lançarem uma infraestrutura que consideram benéfica.

O Fusion.js está disponível sob a licença MIT. Contribuições são incentivadas via GitHub.

Fonte: