A renderização do lado do servidor , também conhecida como SSR, teve um grande impacto na comunidade de desenvolvedores de front-end, React anunciou planos para oficialmente introduza os componentes do servidor na biblioteca. Você pode estar se perguntando sobre o que é toda essa confusão e por que alguém pode querer optar por SSR em vez da renderização normal do lado do cliente que o React usa principalmente.

O SSR tem vários benefícios:

  • Melhores resultados de SEO (otimização de mecanismo de pesquisa) porque os mecanismos de pesquisa são mais facilmente capazes de rastrear sites SSR renderizados em busca de palavras-chave e exibi-los nas SERPs (páginas de resultados de mecanismos de pesquisa) para conteúdo relacionado
  • Vantagens do SMO (otimização de mídia social) que surgem da exibição de uma visualização quando compartilhada em plataformas de mídia social
  • Carregamento mais rápido do que aplicativos renderizados do lado do cliente, tornando os sites SSR mais responsivos e proporcionando uma melhor experiência do usuário

Essas vantagens levaram ao surgimento da arquitetura Jamstack, que visa oferecer experiências da web mais rápidas e consistentes fazendo uso de pré-renderização, em que os ativos são compilados no servidor durante a construção.

Next.js é um dos pacotes SSR mais amados na comunidade React e permite que os desenvolvedores aproveitem os benefícios do SSR durante a construção seus sites com React.

Next.js fornece um processo de instalação de configuração zero semelhante ao que Create React App faz por meio de um pacote chamado Create Next App. Hoje, veremos como você pode usar Next.js em um aplicativo React pré-existente. Isso permitirá que você adicione SSR a um projeto existente.

Processo de migração

Para mostrar como essa migração é feita, vamos migrar este projeto de um tutorial anterior , uma demonstração de React componentes para bases de código TypeScript, para usar Next.js.

A primeira etapa será clonar o repo, o que você pode fazer com SSH, HTTPS ou a nova CLI do GitHub:

//SSH
git clone [email protected]: austinroy/react-ts-component-demo.git
//HTTPS
git clone https://github.com/austinroy/react-ts-component-demo.git
//GitHub CLI
gh repo clone austinroy/react-ts-component-demo

Instale as dependências com o comando yarn e execute o aplicativo com yarn start . Você deve ver algumas informações básicas de Star Wars em seu navegador que são semelhantes a esta sandbox.

Atualização de scripts e dependências

Este aplicativo foi configurado usando Create React App, que usa react-scripts como seu executor de script. Você precisará substituí-lo por próximo .

Desinstale react-scripts do projeto e adicione next :

 yarn remove scripts de reação fio adicionar a seguir

Usamos React Router para nossa navegação de página, mas Next.js usa um método diferente de roteamento, que também abordaremos. Você também precisará desinstalar o react-router-dom :

 yarn remove react-router-dom

Nossa próxima etapa é atualizar todos os scripts que usaram react-scripts para usar next em nossa seção de scripts do arquivo package.json :

... "scripts": { "dev":"próximo dev", "construir":"próxima construção", "start":"próximo início" },
...

next dev executa um servidor de desenvolvimento em localhost: 3000 , e next build compila uma versão pronta para produção do aplicativo, enquanto next start executa a versão de produção do aplicativo.

Por último, adicione .next a .gitignore .

Rotas e links

Como mencionamos acima, Next.js tem um método totalmente diferente de tratamento de roteamento e links de páginas do React Router e react-router-dom . Ele tem um roteador baseado em sistema de arquivos construído no conceito de páginas , onde uma página é um componente React exportado de um arquivo .js , .jsx , .ts ou .tsx nas pages diretório.

Para implementar, precisaremos criar um diretório pages e converter todos os componentes Route em nosso aplicativo para arquivos dentro de pages .

 páginas mkdir && touch pages/index.tsx pages/WithoutTS.jsx

Agora vamos criar nossa página inicial. Adicione o seguinte código ao seu arquivo pages/index.tsx :

 importar {DisplayWithTS} de'../src/pages/WithTS'
const TSComponent=()=> { Retorna(  ) } exportar TSComponent padrão

Para demonstrar o componente JavaScript, construiremos a página WithoutTS. Adicione o seguinte código ao arquivo pages/WithoutTS :

 importar {DisplayWithoutTS} de'../src/pages/WithoutTS'
const JSCOmponent=()=> { Retorna(  ) } exportar JSCOmponent padrão

Estilo

Da mesma forma que Create React App, next permite que você importe estilos para componentes. No Next.js, no entanto, eles precisam ser tratados como Módulos CSS .

Você pode, entretanto, adicionar folhas de estilo globais criando um arquivo _app.js personalizado no diretório pages :

 touch pages/_app.js

Importe estilos para _app.js e adicione o seguinte código:

 import'../src/App.css' exportar função padrão App ({Component, pageProps}) { retornar 
}

Você precisará reiniciar o servidor de desenvolvimento para carregar as alterações após criar _app.js . Faça isso e verifique seu navegador; agora você terá replicado completamente a aparência anterior do aplicativo, conforme visto na caixa de proteção do código. E assim, seu aplicativo agora é renderizado no lado do servidor com Next.js. Muito bom!

Limpeza

Agora você pode apagar os arquivos gerados pelo Create React App do diretório src , como App.tsx , App.test.tsx , index.ts , index.css e serviceWorker.ts , porque Next.js agora lida com tudo o que esses arquivos estavam fazendo.

Você também pode reorganizar sua estrutura de pastas um pouco como quiser, mas lembre-se de que Next.js usa um mecanismo de roteamento baseado em sistema de arquivos ao fazer isso.

Outras coisas a serem investigadas

Agora você está pronto para começar a migrar seus projetos antigos para Next.js. Para projetos mais complexos, no entanto, você pode precisar se aprofundar um pouco mais.

  • Acesso a window , localStorage , navigator e outros APIs da Web -geralmente estão disponíveis para aplicativos renderizados do lado do cliente prontos para uso, mas como Next.js usa pré-renderização, você precisará acessá-los apenas em o lado do cliente do seu aplicativo SSR. Uma maneira de fazer isso é com o gancho useEffect
  • Otimização de imagem-embora nosso aplicativo de demonstração não contenha imagens, a maioria dos aplicativos da web fará uso de ativos de imagem em algum lugar dentro deles. Next.js fornece um componente Imagem personalizado. next/image é uma extensão do HTML elemento , evoluído para a web moderna. Ele fornece otimizações de tempo de construção para redimensionar, otimizar e exibir imagens em formatos modernos como WebP quando o navegador for compatível
  • Variáveis ​​de ambiente-variáveis ​​ou segredos .env também são suportados no Next.js, assim como no Create React App. No entanto, você precisará alterar o prefixo REACT_APP_ para NEXT_PUBLIC_ para torná-los disponíveis no momento da compilação
  • next/head para SEO-Next.js fornece um componente integrado para anexar tags à página head de seu aplicativo em next/head .

No geral, Next.js é uma das melhores opções de SSR disponíveis atualmente. Usar a renderização do lado do servidor em seus aplicativos traz benefícios para a experiência do usuário, como carregamento mais rápido, e para exposição, aumentando a compatibilidade com SEO e SMO.

Adicionar Next.js em seu aplicativo React já existente é um processo bastante direto que oferece uma boa visão de como pode ser o futuro do desenvolvimento web de front-end, deixando muitos desenvolvedores animados com o que os próximos React Server Components irão trazer.

A postagem Como adotar o Next. js em seu aplicativo existente apareceu primeiro no LogRocket Blog .

Source link