<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
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
Criando o projeto Gumball Verse
Primeira requisição com useFetch
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
</aside>
Por enquanto, as nossas páginas não têm um título próprio na aba do navegador. Poderíamos configurar um título global no nuxt.config.ts, mas neste projeto vamos configurar cada página separadamente, para entender melhor como funciona e deixar tudo mais personalizado. Para isso, vamos usar o useHead.
O useHead é um composable do Nuxt que altera o <head> da página: título, meta tags, favicon e outros elementos. Como o Nuxt renderiza a página no servidor, essas informações já vão no HTML, e os buscadores e redes sociais enxergam tudo. Isso é essencial para o SEO.
Estes serão os títulos de cada página:
Gumball VersePersonagens | Gumball VerseLugares | Gumball VerseSobre | Gumball VerseAtualize o arquivo app/pages/index.vue:
<script setup>
useHead({
title: 'Gumball Verse',
});
</script>
<template>
<div>
<HomeHero />
<CharactersListing id="characters" />
<LocationsListing id="locations" class="section--tinted" />
</div>
</template>
Além do título, a página inicial agora monta as três seções: o HomeHero e as duas listagens que integramos com a API.
Atualize o arquivo app/pages/about/index.vue:
<script setup>
const GITHUB_USERNAME = 'arturbomtempo-dev';
useHead({
title: 'Sobre | Gumball Verse',
});
</script>
<template>
<div>
<PageHero
color="pink"
eyebrow="Bastidores"
title="Sobre o projeto"
lead="Quem construiu o Gumballverse, como ele funciona e o que tem por trás de cada card."
/>
<AboutProject />
<AuthorProfile class="section--tinted" :username="GITHUB_USERNAME" />
<ContributionsCalendar :username="GITHUB_USERNAME" />
<RepositoriesListing class="section--tinted" :username="GITHUB_USERNAME" />
</div>
</template>
<aside>
✏️ Não se esqueça de trocar o valor de GITHUB_USERNAME pelo seu usuário do GitHub. Os componentes AuthorProfile, ContributionsCalendar e RepositoriesListing usam esse valor para buscar o seu perfil, as suas contribuições e os seus repositórios na API do GitHub.
</aside>