透過 100 多個技巧學習 Nuxt!

模組

Nuxt Kit 提供一組實用工具,幫助您建立和使用模組。您可以使用這些工具來建立您自己的模組或重複使用現有的模組。

模組是 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('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',
        }
      ]
    })
  }
})