Idealizado por Guillermo Rauch, com a primeira versão lançada em 2016 pela Vercel, o Next.js veio com um objetivo: ser um framework web full-stack de código aberto, fácil e eficiente de ser usado.
Desde então o Next.js se estabeleceu como um dos frameworks mais populares para web apps. Seu foco é fornecer ferramentas eficientes, especialmente para quem já utiliza React, tendo em vista que o framework utiliza de React components para renderizar o front-end, o que facilita muito a adesão ao Next.js, considerando a grande popularidade do React entre a comunidade.
Neste artigo vou abordar o Next.js 14, a versão mais recente e atualizada.
Primeiras coisas primeiro
Para podermos alinhar o conhecimento de quem está lendo este artigo e não assumir que você caro leitor já sabe o que tais jargões significam, eu vou dar uma breve introdução para você:
Layout Shift: Se refere a mudanças inesperadas no layout da página, que ocorrem quando elementos como imagens, vídeos, fontes ou anúncios, são carregados ou redimensionados após o conteúdo já ter sido renderizado.
Lazy Loading: Técnica de otimização usada para adiar o carregamento de conteúdo não essencial de uma página até que ele seja realmente necessário, como quando o usuário rola a página até esse conteúdo. Isso melhora a performance inicial da página e a experiência do usuário, pois apenas os elementos visíveis ou prioritários são carregados imediatamente.
O Que é o Next.js?
Objetivamente, o Next.js é um framework para construir aplicações full-stack para Web, com muitas funcionalidades que otimizam o desenvolvimento, tanto no lado do cliente quanto do servidor. Ele facilita a criação de aplicações web com qualidade, renderização eficiente e estrutura organizada.
Ele utiliza de React Components para renderização da interface, e complementa a aplicação com features adicionais e otimização, além de proporcionar todo o ambiente para o desenvolvimento da aplicação, do client ao banco de dados.
O Next.js permite criar tanto o front-end quanto o back-end em um único ambiente.
Principais Características
A versão mais recente (v14) do Next.js traz inovações importantes, especialmente com a introdução do App Router e Server-Side Components.
Nos próximos artigos dessa série, vou abordar mais especificamente sobre como funciona o App Router e Server-Side Components.
As principais características incluem:
- App Route
O App Router é a nova abordagem de roteamento no Next.js, que aproveita ao máximo as funcionalidades mais recentes do React, como Server Components e Streaming de Dados.
- Suporte a Server e Client Components:
Com as versões mais recentes do Next.js, surgiu uma abordagem diferenciada para lidar com a renderização de componentes, dividindo-os em Server Components e Client Components.
Enquanto o Server Components se trata de componentes React que são renderizados exclusivamente (e opcionalmente armazenadas em cache) no servidor, o Client Components é pré-renderizado no servidor e pode usar JavaScript do cliente para executar no navegador.
- Otimização Automática de Código (Code Splitting)
Para melhorar a experiência de navegação, o Next.js divide automaticamente o código do seu aplicativo por segmentos de rota, o chamado Code Splitting, melhorando a performance.
- Route Handlers
Route Handlers é o substituto da antiga API Routes do Next.js, essa funcionalidade permite manipular requisições para uma rota específica usando as APIs da Web Request e Response. O que elimina a necessidade de um servidor back-end separado.
React e Next.js: Diferenças e Complementaridades
Neste momento é provável existir um vulto na sua cabeça sobre como separar o React do Next.js. Embora ambos sejam usados juntos, é importante entender suas funções distintas.
Enquanto o React é uma biblioteca focada na construção de interfaces de usuário (UI) com componentes reutilizáveis, o Next.js vai além e adiciona ferramentas e funcionalidades que facilitam o desenvolvimento full-stack. Entre essas funcionalidades está a geração de rotas automáticas e integração fácil com ferramentas de monitoramento e segurança.
Em resumo, o React cuida da interface, enquanto o Next.js fornece as ferramentas adicionais para otimização e gerenciamento da aplicação como um todo.
Vantagens do Next.js
Historicamente, os desenvolvedores tiveram que usar diferentes linguagens (por exemplo, JavaScript, PHP, Ruby) e estruturas ao escrever código para o servidor e o cliente. Atualmente, os desenvolvedores podem usar a mesma linguagem (JavaScript) e a mesma estrutura (por exemplo, Next.js). Essa premissa permite escrever código perfeitamente para ambos os ambientes, sem alternância de contexto.
Isso por si só valida os benefícios de se usar uma ferramenta como o Next.js, mas ele não é a única estrutura que resolve o problema de alternância de contexto, que devo dizer, essa é uma discussão muito mais antiga do que o próprio Next.js em si, então vamos às especificidades que fazem do Next.js ser de fato vantajoso:
1. Otimização Automática de Código:
Além do já citado code splitting, que faz a divisão automática de código, o Next.js automaticamente aplica lazy loading para Client Components. O lazy loading ajuda a melhorar o desempenho de carregamento inicial de um app diminuindo a quantidade de JavaScript necessária para renderizar uma rota.
2. Sistema de Rotas Simplificado:
Rotas baseadas em pastas e arquivos, o que para mim, pessoalmente, simplificou a configuração e estruturação do projeto.
O suporte tanto ao App Router (moderno) quanto ao Page Router (legado) continua.
3. Suporte Nativo a TypeScript:
Transição fácil para TypeScript, sem a necessidade de configuração manual.
4. Otimizações de Imagem next/image
:
O componente <Image>
é uma extensão da tag <img>
que vem automaticamente com otimização de imagens.
Previne mudança de layout “Layout Shift” automaticamente quando as imagens são carregadas.
Redimensiona imagens para impedir imagens grandes demais em dispositivos com uma viewport menor.
Faz lazy loading por padrão (as imagens são carregadas à medida que entram na viewport).
5. Otimizações de Fonte next/fonte
:
O Next.js otimiza automaticamente as fontes, baixando-as durante o processo de build e hospedando juntamente com os outros assets estáticos.
Isso significa que quando um usuário visita seu app, não há solicitações de rede adicionais para fontes que afetariam o desempenho, ou seja, zero Layout Shift.
6. Renderização Dividida por Segmentos de Rota
O processo de renderização é dividido em segmentos de rota, o que significa que diferentes partes da página podem ser renderizadas de maneira independente. Isso permite que a renderização aconteça de forma parcial e por streaming, o que melhora a experiência do usuário, pois partes da página podem ser exibidas à medida que ficam prontas, sem a necessidade de esperar que a página inteira seja processada.
7. Facilidade de Deploy na Vercel:
A implantação no Vercel é de configuração zero, a integração direta com a plataforma faz com que deploys sejam rápidos e muito convenientes, com CI/CD (Integração Contínua e Entrega Contínua) bastante simplificada.
Como Começar um projeto Next.js
Uma das vantagens do Next.js é a sua simplicidade de configuração. Criar um novo projeto é rápido e direto:
$ npx create-next-app@latest
Esse comando inicializa um projeto com todas as configurações necessárias para começar a desenvolver imediatamente, configurando o ambiente e instalando dependências básicas.
$ npm run dev
E seu projeto estará rodando por padrão na porta 3000: http://localhost:3000
.
Conclusão
Esse artigo teve como objetivo cobrir os aspectos principais do Next.js e as novidades da versão 14, onde é introduzido um conjunto muito interessante de funcionalidades que tornam o desenvolvimento web ainda mais eficiente e eleva a experiência do usuário.
Por muito tempo o Next.js foi visto simplesmente como "o Framework para fazer SSR", espero ter conseguido mostrar que as possibilidades dessa ferramenta vão muito além.
Parabéns para você! Por adquirir um novo conhecimento hoje.🎉
Em breve estarei postando a sequência dessa série de artigos sobre Next.js ✨
Te vejo lá!
Meus Links 🔗
Se tiver dúvidas ou quiser trocar ideias, sinta-se à vontade para entrar em contato!
Top comments (1)
Nossa... quanta feature legal!