NextJs

# O que é?

É um framework web desenvolvido em ReactJS.

# Porque usar?

Facilita o desenvolvimento de aplicações.

# O que o Next faz?

  • Renderização no servidor (SSR - Server Side Rendering)
  • Geração de estáticos (SSG - Static Site Generation)
  • Criação de SPA's (Single Page Application)
  • CSS-in-JS (Syled-jsx, Styled Components, Emotion)
  • Zero Configuration (rotas, hot reloading, code splitting...)
  • Completamente extensível (Babel/Webpack, plugins...)
  • Otimizado para produção

# Tipos de uma aplicação

# Static Site (HTML/CSS/JS) - GatsbyJS, Hexo

Vantagens:

  • Uso quase nulo do servidor
  • Pode ser servido numa CDN (melhor cache)
  • Melhor performance
  • Dá pra usar qualquer servidor

Desvantagens:

  • Tempo de build pode ser muito alto
  • Dificuldade para escalar em aplicações grandes
  • Dificuldade para realizar atualizações constantes

Quando usar:

  • Site simples sem muita interação do usuário
  • Quando você é a única pessoa que publica conteúdo
  • Se o conteúdo muda pouco
  • Quando a performance for extremamente importante

Ex: Landing Pages, Blogs, Portfólios

# Client Side Rendering (SPA) - React, Vue, Angular

Vantagens:

  • Permite páginas ricas em interações sem recarregar
  • Site rápido após o load inicial
  • Ótimo para aplicações web

Desvantagens:

  • Load inicial pode ser muito grande
  • Performance imprevisível, depende do tamanho dos arquivos JS
  • Dificuldades no SEO
  • A maioria do conteúdo não é indexado

Quando usar:

  • Quando não há muita necessidade de ser indexado pelo Google
  • Quando refreshs entre rotas não são desejáveis
  • Quando as informações pra cada usuário vão ser diferentes (autenticação, por exemplo)

Ex: Twitter Web, Facebook Web, Spotify Web

# Server Side Rendering (SSR) - NextJS, Nuxt

Vantagens:

  • Ótimo em SEO
  • Meta tags com previews mais adequados
  • O conteúdo pode ser visto mais rápido
  • Pode ter código compartilhado com o backend em Node
  • Menor processamento no lado do usuário (ideal para dispositivos mais lentos)

Desvantagens:

  • Primeiro acesso mais demorado
  • HTML maior
  • Reload completo nas mudanças de rota

Quando usar:

  • Quando há várias interações, como um SPA, mas precisa de loading mais rápido
  • Quando o conteúdo muda frequentemente
  • Quando há um número muito gande de páginas
  • Quando precisa de uma boa indexação no Google

Ex: Ecommerce, sites de notícias