jemluz / ignite-call

An advanced full stack project to deepen knowledge in NextJS
https://ignite-call-pi-three.vercel.app
1 stars 0 forks source link

Setup & Estrutura #1

Open jemluz opened 3 months ago

jemluz commented 3 months ago

Criação do projeto em next

Olha, a essa altura do campeonato, o next mudou bastante... No curso o diego roda o comando npx create-next-app@latest --use-npm para criar o projeto.

Padrão pages vs app router

Dias antes eu tentei criar um proj em next em sua ultima atualização e me enrolei toda (a mudança do pages para o app router é significativa e muda muita coisa), então ao invés de rodar o comando, eu só copiei os arquivos do commit para manter a versão antiga do next.

Documentação oficial do Next sobre Pages vs App Router

Por enquanto vou usar esse template abaixo para novos projetos Next, pelo menos até eu parar para estudar as novidades da ultima atualização.

Template manual NextJS (sem CSS configurado)

Bem aqui nesse commit

jemluz commented 3 months ago

Instalação do design system

Mais um template

Template manual NextJS (com CSS configurado)

Considerando o comentário anterior, abaixo estão instruções para configurar estilos no padrão Pages Router do Next.

Carregando os estilos globais com stitches no next

Habilitando CSS in JS with SSR (javascript desabilitado)

Por padrão o stitches não vem com SSR habilitado, e por ser um CSS in JS isso significa que se o javascript estiver desabilitado no client, o css tbm não irá carregar.

Para configurar o SSR no stitches, utilizamos a seguinte tag dentro do <head> do nosso html. Ela irá gerar todo texto CSS previamente.

{/* enable css with SSR (works with disabled js) */}
<style id="stitches" dangerouslySetInnerHTML={{ __html: getCssText() }}/>

image

Assim, mesmo quando o js estiver desabilitado, os estilos do stitches irão carregar normalmente image

jemluz commented 3 months ago

Configuração do pageExtensions

No padrão page router do next, qualquer arquivo dentro da pasta pages vira uma rota.

Para controlar isso podemos configurar o pageExtensions no arquivo next.config.js e filtrar que tipos de extensões queremos que sejam interpretadas como rotas

image image