Компоненты
Регистрация компонентов глобально или локально, добавление директорий для сканирования.
Компоненты — базовые блоки приложения Nuxt, переиспользуемые экземпляры Vue для интерфейса. По умолчанию Nuxt автоматически импортирует компоненты из каталога components. Чтобы подключать компоненты из другого каталога или выборочно, в @nuxt/kit есть addComponentsDir и addComponent.
addComponentsDir
Регистрирует каталог для сканирования компонентов; они подгружаются при использовании. Глобальная регистрация — только при global: true.
Использование
export default defineNuxtModule({
meta: {
name: '@nuxt/ui',
configKey: 'ui',
},
setup () {
addComponentsDir({
path: resolve('./runtime/components'),
prefix: 'U',
pathPrefix: false,
})
},
})
Тип
function addComponentsDir (dir: ComponentsDir, opts: { prepend?: boolean } = {}): void
Параметры
dir — объект со свойствами:
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
path | string | да | Путь к каталогу с компонентами (абсолютный или относительный). Можно использовать алиасы Nuxt (~, @) или путь к npm-пакету. |
pattern | string | string[] | нет | Паттерн для отбора файлов. |
ignore | string[] | нет | Паттерны исключения. |
prefix | string | нет | Префикс для имён всех найденных компонентов. |
pathPrefix | boolean | нет | Добавлять путь к имени компонента. |
prefetch | boolean | нет | В production — настройка prefetch для компонентов с префиксом Lazy (webpack). |
preload | boolean | нет | Аналогично prefetch. |
isAsync | boolean | нет | Загружать компонент асинхронно (отдельный chunk), даже без префикса Lazy. |
extendComponent | (component: Component) => Promise<Component | void> | (Component | void) | нет | Функция для каждого найденного компонента; принимает и возвращает объект компонента (или промис). |
global | boolean | нет | Регистрировать компоненты глобально. |
island | boolean | нет | Регистрировать как island. Подробнее: <NuxtIsland/>. |
watch | boolean | нет | Отслеживать изменения в каталоге (добавление/удаление файлов). |
extensions | string[] | нет | Расширения файлов, поддерживаемые билдером Nuxt. |
transpile | 'auto' | boolean | нет | Транспилировать путь через build.transpile. 'auto' — включить, если путь содержит node_modules/. |
opts:
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
prepend | boolean | нет | true — добавить каталог в начало списка (unshift вместо push). |
addComponent
Регистрирует один компонент для автоимпорта.
Использование
import { addComponent, createResolver, defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: '@nuxt/image',
configKey: 'image',
},
setup () {
const resolver = createResolver(import.meta.url)
addComponent({
name: 'NuxtImg',
filePath: resolver.resolve('./runtime/components/NuxtImg.vue'),
})
addComponent({
name: 'NuxtPicture',
filePath: resolver.resolve('./runtime/components/NuxtPicture.vue'),
})
},
})
Тип
function addComponent (options: AddComponentOptions): void
Параметры
options — объект со свойствами:
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
name | string | да | Имя компонента. |
filePath | string | да | Путь к компоненту. |
declarationPath | string | нет | Путь к файлу деклараций; для type templates. По умолчанию — filePath. |
pascalName | string | нет | Имя в PascalCase; по умолчанию генерируется из name. |
kebabName | string | нет | Имя в kebab-case; по умолчанию генерируется из name. |
export | string | нет | Имя экспорта (named или default). По умолчанию 'default'. |
shortPath | string | нет | Короткий путь; по умолчанию из пути к компоненту. |
chunkName | string | нет | Имя chunk; по умолчанию из имени компонента. |
prefetch | boolean | нет | В production — настройка prefetch для Lazy (webpack). |
preload | boolean | нет | Аналогично prefetch. |
global | boolean | нет | Регистрировать глобально. |
island | boolean | нет | Регистрировать как island. См. <NuxtIsland/>. |
mode | 'client' | 'server' | 'all' | нет | Где рендерить: клиент, сервер или оба. По умолчанию оба. |
priority | number | нет | Приоритет; при совпадении имён используется компонент с большим приоритетом. |
Примеры
Чтобы автоимпортировать компонент из npm-пакета как named export (не default), укажите опцию export.
import { addComponent, defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
setup () {
// import { MyComponent as MyAutoImportedComponent } from 'my-npm-package'
addComponent({
name: 'MyAutoImportedComponent',
export: 'MyComponent',
filePath: 'my-npm-package',
})
},
})