layouts
Включение лейаутов
Лейауты включаются путем добавления <NuxtLayout> в ваш app.vue:
<template>
  <NuxtLayout>
    <NuxtPage />
  </NuxtLayout>
</template>
Чтобы использовать лейаут:
- Установите свойство layoutна вашей странице с помощью definePageMeta.
- Установите свойство nameдля<NuxtLayout>.
someLayout становится some-layout.layouts/default.vue.app.vue.<slot />.Лейаут по умолчанию
Добавьте ~/layouts/default.vue:
<template>
  <div>
    <p>Некоторый контент лейаута по умолчанию, общий для всех страниц</p>
    <slot />
  </div>
</template>
В файле лейаута содержимое страницы будет отображаться в компоненте <slot />.
Именованный лейаут
-| layouts/
---| default.vue
---| custom.vue
Затем вы можете использовать лейаут custom на своей странице:
<script setup lang="ts">
definePageMeta({
  layout: 'custom'
})
</script>
Вы можете напрямую переопределить лейаут по умолчанию для всех страниц, используя свойство name <NuxtLayout>:
<script setup lang="ts">
// Вы можете сделать выбор на основе вызова API или статуса входа в систему.
const layout = "custom";
</script>
<template>
  <NuxtLayout :name="layout">
    <NuxtPage />
  </NuxtLayout>
</template>
Если у вас есть лейаут во вложенных директориях, имя лейаута будет основано на пути к нему и имени файла, при этом дублирующиеся сегменты будут удалены.
| Файл | Имя лейаута | 
|---|---|
| ~/layouts/desktop/default.vue | desktop-default | 
| ~/layouts/desktop-base/base.vue | desktop-base | 
| ~/layouts/desktop/index.vue | desktop | 
Для ясности мы рекомендуем, чтобы имя файла лейаута совпадало с его именем:
| Файл | Имя лейаута | 
|---|---|
| ~/layouts/desktop/DesktopDefault.vue | desktop-default | 
| ~/layouts/desktop-base/DesktopBase.vue | desktop-base | 
| ~/layouts/desktop/Desktop.vue | desktop | 
Динамическое изменение лейаута
Вы также можете использовать хелпер setPageLayout для динамического изменения лейаута:
<script setup lang="ts">
function enableCustomLayout () {
  setPageLayout('custom')
}
definePageMeta({
  layout: false,
});
</script>
<template>
  <div>
    <button @click="enableCustomLayout">Обновить лейаут</button>
  </div>
</template>
Переопределение лейаута на постраничной основе
Если вы используете страницы, вы можете получить полный контроль, установив layout: false, а затем используя компонент <NuxtLayout> на странице.
<script setup lang="ts">
definePageMeta({
  layout: false,
})
</script>
<template>
  <div>
    <NuxtLayout name="custom">
      <template #header> Некоторое содержимое шаблона заголовка. </template>
      Остальная часть страницы
    </NuxtLayout>
  </div>
</template>
<NuxtLayout> на своих страницах, убедитесь, что он не является корневым элементом (или отключите лейаут/переходы страниц).