Модули
Модули являются строительными блоками Nuxt. Kit предоставляет набор утилит, которые помогают вам создавать и использовать модули. Вы можете использовать эти утилиты для создания своих собственных модулей или повторного использования существующих модулей. Например, вы можете использовать функцию defineNuxtModule
для определения модуля и функцию installModule
для программной установки модуля.
defineNuxtModule
Определяет модуль Nuxt, автоматически объединяя значения по умолчанию с предоставленными пользователем параметрами, устанавливая любые предоставленные хуки и вызывая необязательную функцию настройки для полного управления.
Тип
function defineNuxtModule<OptionsT extends ModuleOptions> (definition: ModuleDefinition<OptionsT> | NuxtModule<OptionsT>): NuxtModule<OptionsT>
type ModuleOptions = Record<string, any>
interface ModuleDefinition<T extends ModuleOptions = ModuleOptions> {
meta?: ModuleMeta
defaults?: T | ((nuxt: Nuxt) => T)
schema?: T
hooks?: Partial<NuxtHooks>
setup?: (this: void, resolvedOptions: T, nuxt: Nuxt) => Awaitable<void | false | ModuleSetupReturn>
}
interface NuxtModule<T extends ModuleOptions = ModuleOptions> {
(this: void, inlineOptions: T, nuxt: Nuxt): Awaitable<void | false | ModuleSetupReturn>
getOptions?: (inlineOptions?: T, nuxt?: Nuxt) => Promise<T>
getMeta?: () => Promise<ModuleMeta>
}
interface ModuleSetupReturn {
timings?: {
setup?: number
[key: string]: number | undefined
}
}
interface ModuleMeta {
name?: string
version?: string
configKey?: string
compatibility?: NuxtCompatibility
[key: string]: unknown
}
Параметры
definition
Тип: ModuleDefinition<T> | NuxtModule<T>
Обязательный: true
Объект определения модуля или функция модуля.
meta
(опционально)
Тип:ModuleMeta
Мета-данные модуля. Определяют имя модуля, версию, ключ конфигурации и совместимость.defaults
(опционально)
Тип:T | ((nuxt: Nuxt) => T)
Параметры по умолчанию для модуля. Если указана функция, она будет вызвана с экземпляром Nuxt в качестве первого аргумента.schema
(опционально)
Тип:T
Схема для опций модуля. Если указана, опции будут применены к схеме.hooks
(опционально)
Тип:Partial<NuxtHooks>
Хуки, которые необходимо установить для модуля. Если указано, модуль установит их.setup
(опционально)
Тип:(this: void, resolvedOptions: T, nuxt: Nuxt) => Awaitable<void | false | ModuleSetupReturn>
Функция настройки для модуля. Если указана, модуль вызовет функцию настройки.
Примеры
// https://github.com/nuxt/starter/tree/module
import { defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule'
},
defaults: {
test: 123
},
setup (options, nuxt) {
nuxt.hook('modules:done', () => {
console.log('Мой модуль готов с текущим вариантом тестирования: ', options.test)
})
}
})
installModule
Устанавливает указанный модуль Nuxt программно. Это полезно, когда ваш модуль зависит от других модулей. Вы можете передать параметры модуля в виде объекта в inlineOptions
, и они будут переданы в функцию setup
модуля.
Тип
async function installModule (moduleToInstall: string | NuxtModule, inlineOptions?: any, nuxt?: Nuxt)
Параметры
moduleToInstall
Тип: string
| NuxtModule
Обязательный: true
Модуль для установки. Может быть либо строкой с именем модуля, либо самим объектом модуля.
inlineOptions
Тип: any
По умолчанию: {}
Объект с параметрами модуля, которые нужно передать в функцию setup
модуля.
nuxt
Тип: Nuxt
По умолчанию: useNuxt()
Экземпляр Nuxt. Если он не указан, то будет получен из контекста через вызов useNuxt()
.
Примеры
import { defineNuxtModule, installModule } from '@nuxt/kit'
export default defineNuxtModule({
async setup (options, nuxt) {
// установит @nuxtjs/fontaine с шрифтом Roboto и запасным шрифтом Impact
await installModule('@nuxtjs/fontaine', {
// конфигурация модуля
fonts: [
{
family: 'Roboto',
fallbacks: ['Impact'],
fallbackName: 'fallback-a',
}
]
})
}
})