<aside> <img src="/icons/arrow-northeast_gray.svg" alt="/icons/arrow-northeast_gray.svg" width="40px" />

Índice

</aside>

<aside> <img src="/icons/notion_green.svg" alt="/icons/notion_green.svg" width="40px" />

Conteúdos

Introdução

Introdução ao Vue.js

Anatomia de um componente .vue

Interpolação e reatividade com ref e computed

Diretivas: v-bind, v-on, v-if, v-for e v-model

Componentes e props

Slots, emits e ciclo de vida

Introdução ao Nuxt.js

Criando o projeto Gumball Verse

Primeira requisição com useFetch

Rotas a partir de arquivos

Layout, base do projeto e nuxt.config.ts

Consumindo a API nas listagens

Páginas de detalhes com rotas dinâmicas

Tratando o erro 404 com createError

Títulos das páginas com useHead

Filtros, paginação e busca com debounce

Desafio: título e favicon dinâmicos

Conclusão e próximos passos

</aside>

Bem-vindo à Parte 2 do workshop! O Nuxt.js é um framework full stack construído sobre o Vue. Ele entrega, já prontos para usar, recursos que toda aplicação real precisa: rotas, servidor e SEO.

Antes de criar o projeto, vamos entender de onde o Nuxt veio, quais problemas ele resolve e alguns conceitos que vão aparecer o tempo todo nas próximas páginas.


Como o Nuxt surgiu

O Vue resolvia muito bem a interface, mas cada projeto precisava montar do zero as rotas, a renderização no servidor e a organização de pastas. Inspirados no Next.js, do mundo React, os irmãos Alexandre e Sébastien Chopin criaram o Nuxt.

Ano Marco O que mudou
2016 Lançamento O Nuxt nasce para levar renderização no servidor ao Vue, com convenções simples.
2018 Nuxt 2 Amadurece e vira referência para sites Vue com SEO.
2022 Nuxt 3 Reescrito com Vue 3, Vite, TypeScript e o servidor Nitro.
2025 Nuxt 4 Nova estrutura com a pasta app/, que usamos no workshop.
2025 Vercel A NuxtLabs passa a fazer parte da Vercel. O Nuxt segue open source (MIT).

Principais vantagens


Como o Nuxt entrega a página

A maior diferença entre um projeto Vue puro e um projeto Nuxt está em onde a página é montada.

Etapa Vue puro (SPA) Nuxt (SSR)
1 O navegador recebe um HTML quase vazio O servidor busca os dados na API
2 Baixa e executa o JavaScript Monta o HTML completo
3 Busca os dados na API O navegador já mostra o conteúdo
4 Só então a tela aparece O Vue "hidrata" e a página fica interativa

<aside> 💡 É por isso que usamos await no useFetch: o servidor espera os dados antes de enviar a página, e o navegador não precisa repetir a requisição.

</aside>