模块
Nuxt Kit 提供了一组实用工具,帮助您创建和使用模块。您可以使用这些工具创建自己的模块或重用现有模块。
模块是 Nuxt 的构建块。Kit 提供了一组实用工具来帮助您创建和使用模块。您可以使用这些工具创建自己的模块或重用现有模块。例如,您可以使用 defineNuxtModule
函数来定义一个模块,并使用 installModule
函数以编程方式安装一个模块。
defineNuxtModule
定义一个 Nuxt 模块,自动将默认值与用户提供的选项合并,安装任何提供的钩子,并调用可选的 setup 函数以进行完全控制。
类型
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>
模块的 setup 函数。如果提供,该模块将调用 setup 函数。
示例
// 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('My module is ready with current test option: ', 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) {
// will install @nuxtjs/fontaine with Roboto font and Impact fallback
await installModule('@nuxtjs/fontaine', {
// module configuration
fonts: [
{
family: 'Roboto',
fallbacks: ['Impact'],
fallbackName: 'fallback-a',
}
]
})
}
})