<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>

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 que é 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:


Página inicial

Atualize 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.


Página Sobre

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>