layers
Директория layers/ служит для организации и автоматической регистрации локальных слоёв в приложении.
Директория layers/ позволяет организовывать и переиспользовать код, компоненты, композаблы и конфигурации. Слои из этой директории в проекте регистрируются автоматически.
Авторегистрация директории
layers/ доступна в Nuxt v3.12.0+.Слои удобны для больших кодовых баз в стиле Domain-Driven Design (DDD), переиспользуемых UI-библиотек и тем, общих пресетов конфигурации и вынесения админ-панелей или фичевых модулей.
Структура
Каждая поддиректория в layers/ считается отдельным слоем. Слой может повторять структуру обычного приложения Nuxt.
У каждого слоя должен быть файл
nuxt.config.ts, иначе он не считается валидным (файл может быть пустым).Directory structure
-| layers/
---| base/
-----| nuxt.config.ts
-----| app/
-------| components/
---------| BaseButton.vue
-------| composables/
---------| useBase.ts
-----| server/
-------| api/
---------| hello.ts
---| admin/
-----| nuxt.config.ts
-----| app/
-------| pages/
---------| admin.vue
-------| layouts/
---------| admin.vue
Алиасы слоёв
Для каждого слоя автоматически создаётся алиас к его srcDir. Обращение к слою: #layers/[name]:
// Слой base
import something from '#layers/base/path/to/file'
// Слой admin
import { useAdmin } from '#layers/admin/composables/useAdmin'
Алиасы слоёв появились в Nuxt v3.16.0.
Содержимое слоя
В слое могут быть:
nuxt.config.ts— конфигурация слоя (мержится с основной)app.config.ts— реактивная конфигурация приложенияapp/components/— Vue-компоненты (автоимпорт)app/composables/— композаблы (автоимпорт)app/utils/— утилиты (автоимпорт)app/pages/— страницыapp/layouts/— лейаутыapp/middleware/— мидлвар маршрутовapp/plugins/— плагины Nuxtserver/— серверные маршруты, мидлвар и утилитыshared/— общий код для app и server
Порядок приоритета
Если один и тот же ресурс (компонент, композабл, страница и т.д.) определён в нескольких слоях, побеждает слой с более высоким приоритетом. Слои сортируются по алфавиту, буквы ближе к концу алфавита имеют больший приоритет (Z > A).
Чтобы задать порядок, добавьте числовой префикс: 1.base/, 2.features/, 3.admin/.