外掛程式與中介層
了解如何將 Nuxt 2 的外掛程式和中介層遷移至 Nuxt Bridge。
新的外掛程式格式
您現在可以遷移至 Nuxt 3 外掛程式 API,其格式與 Nuxt 2 略有不同。
外掛程式現在僅接受一個引數 (nuxtApp
)。您可以在文件中找到更多資訊。
plugins/hello.ts
export default defineNuxtPlugin(nuxtApp => {
nuxtApp.provide('injected', () => 'my injected function')
// now available on `nuxtApp.$injected`
})
如果您想在您的外掛程式中使用新的 Nuxt composables(例如
useNuxtApp
或 useRuntimeConfig
),您將需要為這些外掛程式使用 defineNuxtPlugin
輔助函式。雖然透過
nuxtApp.vueApp
提供了相容性介面,但您應避免以這種方式註冊外掛程式、指令、mixins 或元件,而沒有新增您自己的邏輯來確保它們不會安裝多次,否則可能會導致記憶體洩漏。新的中介層格式
您現在可以遷移至 Nuxt 3 中介層 API,其格式與 Nuxt 2 略有不同。
中介層現在僅接受兩個引數 (to
, from
)。您可以在文件中找到更多資訊。
export default defineNuxtRouteMiddleware((to) => {
if (to.path !== '/') {
return navigateTo('/')
}
})
在 middleware 目錄之外不支援使用
defineNuxtRouteMiddleware
。definePageMeta
您也可以在 Nuxt Bridge 中使用 definePageMeta
。
您可以使用設定檔中的 macros.pageMeta
選項啟用
nuxt.config.ts
import { defineNuxtConfig } from '@nuxt/bridge'
export default defineNuxtConfig({
bridge: {
macros: {
pageMeta: true
}
}
})
但僅適用於
middleware
和 layout
。