Представления

Несколько слоёв компонентов для пользовательского интерфейса приложения Nuxt.

app.vue

По умолчанию Nuxt будет рассматривать этот файл как точку входа и отображать его содержимое для каждого маршрута приложения.

app.vue
<template>
  <div>
    <h1>Добро пожаловать на домашнюю страницу</h1>
  </div>
</template>
Если вы знакомы с Vue, может возникнуть вопрос: где main.js, который обычно создаёт экземпляр приложения Vue? В Nuxt это делается «за кулисами».

Компоненты

Большинство компонентов — это повторно используемые части пользовательского интерфейса, такие как кнопки и меню. В Nuxt вы можете создавать эти компоненты в директории components/, и они будут автоматически доступны в приложении без необходимости их явного импорта.

<template>
  <div>
    <h1>Добро пожаловать на домашнюю страницу</h1>
    <AppAlert>
      Это автоматически импортированный компонент.
    </AppAlert>
  </div>
</template>

Страницы

Страницы — это представления под конкретные маршруты: каждый файл в pages/ соответствует своему URL и рендерит своё содержимое.

Чтобы использовать страницы, создайте файл pages/index.vue и добавьте компонент <NuxtPage /> в app.vue (или удалите app.vue как точку входа по умолчанию). Теперь вы можете создавать больше страниц и соответствующих им маршрутов, добавляя новые файлы в директорию pages/.

<template>
  <div>
    <h1>Добро пожаловать на домашнюю страницу</h1>
    <AppAlert>
      Это автоматически импортированный компонент.
    </AppAlert>
  </div>
</template>
Узнать больше Раздел маршрутизации.

Лейауты

Лейауты — это обёртки вокруг страниц, которые содержат общий пользовательский интерфейс для нескольких страниц, например, отображение хедера и футера. Лейауты — это файлы Vue, использующие компоненты <slot /> для отображения содержимого страницы. Файл layouts/default.vue будет использоваться по умолчанию. Пользовательские лейауты можно задать как часть метаданных вашей страницы.

Если в приложении всего один лейаут, проще обойтись app.vue с <NuxtPage />.
<template>
  <div>
    <NuxtLayout>
      <NuxtPage />
    </NuxtLayout>
  </div>
</template>

Подробнее о нескольких лейаутах и их подключении к страницам — в разделе «Лейауты».

Дополнительно: Расширение HTML-шаблона

Если вам нужно изменить только <head>, вы можете обратиться к разделу SEO и метаданные.

Вы можете получить полный контроль над шаблоном HTML, добавив плагин Nitro, который регистрирует хук. Коллбэк-функция хука render:html позволяет вам изменять HTML перед его отправкой клиенту.

server/plugins/extend-html.ts
export default 
defineNitroPlugin
((
nitroApp
) => {
nitroApp
.
hooks
.
hook
('render:html', (
html
, {
event
}) => {
// Это будет объектное представление HTML-шаблона.
console
.
log
(
html
)
html
.
head
.
push
(`<meta name="description" content="Моё индивидуальное описание" />`)
}) // Вы также можете перехватить ответ здесь.
nitroApp
.
hooks
.
hook
('render:response', (
response
, {
event
}) => {
console
.
log
(
response
) })
})
Узнать больше Docs > 3 X > Guide > Going Further > Hooks.