nuxt logo

Tradução da Documentação (Não Oficial)

Visualizações

O Nuxt fornece várias camadas de componentes para implementar a interface do usuário da sua aplicação.

app.vue

O arquivo app.vue é o ponto de entrada da sua aplicação

Por padrão, o Nuxt tratará este arquivo como o ponto de entrada e renderizará seu conteúdo para cada rota da aplicação.

app.vue
<template>
  <div>
   <h1>Bem-vindo à página inicial</h1>
  </div>
</template>

Se você está familiarizado com Vue, pode se perguntar onde está o main.js (o arquivo que normalmente cria uma aplicação Vue). O Nuxt faz isso nos bastidores.

Componentes

Componentes são partes reutilizáveis da interface do usuário

A maioria dos componentes são partes reutilizáveis da interface do usuário, como botões e menus. No Nuxt, você pode criar esses componentes no diretório components/, e eles estarão automaticamente disponíveis em toda a sua aplicação sem a necessidade de importá-los explicitamente.

<template>
  <div>
    <h1>Bem-vindo à página inicial</h1>
    <AppAlert>
      Este é um componente importado automaticamente.
    </AppAlert>
  </div>
</template>

Páginas

Páginas são visualizações vinculadas a uma rota específica

As páginas representam visualizações para cada padrão de rota específico. Cada arquivo no diretório pages/ representa uma rota diferente exibindo seu conteúdo.

Para usar páginas, crie o arquivo pages/index.vue e adicione o componente <NuxtPage /> ao app.vue (ou remova app.vue para a entrada padrão). Agora você pode criar mais páginas e suas rotas correspondentes adicionando novos arquivos no diretório pages/.

<template>
  <div>
    <h1>Bem-vindo à página inicial</h1>
    <AppAlert>
      Este é um componente importado automaticamente
    </AppAlert>
  </div>
</template>
Veja também Seção de Roteamento

Layouts

Layouts são envoltórios em torno das páginas

Layouts são envoltórios em torno das páginas que contêm uma interface de usuário comum para várias páginas, como um cabeçalho e rodapé. Layouts são arquivos Vue que usam componentes <slot /> para exibir o conteúdo da página. O arquivo layouts/default.vue será usado por padrão. Layouts personalizados podem ser definidos como parte dos metadados da sua página.

Se você tiver apenas um layout na sua aplicação, recomendamos usar app.vue com <NuxtPage /> em vez disso.

<template>
  <div>
    <NuxtLayout>
      <NuxtPage />
    </NuxtLayout>
  </div>
</template>

Se você quiser criar mais layouts e aprender como usá-los em suas páginas, encontre mais informações na seção de Layouts.

Avançado: Estendendo o Template HTML

Se você só precisa modificar o <head>, pode consultar a seção de SEO e meta.

Você pode ter controle total sobre o template HTML adicionando um plugin Nitro que registra um hook. A função de callback do hook render:html permite que você altere o HTML antes de ser enviado ao cliente.

server/plugins/extend-html.ts
export default defineNitroPlugin((nitroApp) => {
  nitroApp.hooks.hook('render:html', (html, { event }) => {
    // Este será uma representação em objeto do template html.
    console.log(html)
    html.head.push(`<meta name="description" content="Minha descrição personalizada" />`)
  })
  // Você também pode interceptar a resposta aqui.
  nitroApp.hooks.hook('render:response', (response, { event }) => { console.log(response) })
})
Veja também guide > going-further > hooks