透過 100 多個技巧的集合學習 Nuxt!

外掛程式與中介層

了解如何將 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(例如 useNuxtAppuseRuntimeConfig),您將需要為這些外掛程式使用 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
    }
  }
})
但僅適用於 middlewarelayout