Nuxt3 中文课程《实战全栈开发简书》限时优惠

Plugins and Middleware

学习如何从Nuxt 2迁移到Nuxt Bridge的新插件和中间件。

新的插件格式

现在你可以迁移到 Nuxt 3 插件 API,它的格式与 Nuxt 2 略有不同。

插件现在只接受一个参数 (nuxtApp)。你可以在文档中找到更多信息。

plugins/hello.ts
export default defineNuxtPlugin(nuxtApp => {
  nuxtApp.provide('injected', () => '我的注入函数')
  // 现在可以在 `nuxtApp.$injected` 上使用
})
如果你想在插件中使用新的 Nuxt 组合式 API(例如 useNuxtAppuseRuntimeConfig),你需要为这些插件使用 defineNuxtPlugin 辅助函数。
虽然通过 nuxtApp.vueApp 提供了兼容的接口,但你应该避免使用这种方式注册插件、指令、混入或组件,除非你自己添加逻辑来确保它们不会被安装多次,否则可能会导致内存泄漏。

新的中间件格式

现在你可以迁移到 Nuxt 3 中间件 API,它的格式与 Nuxt 2 略有不同。

中间件现在只接受两个参数 (to, from)。你可以在文档中找到更多信息。

export default defineNuxtRouteMiddleware((to) => {
  if (to.path !== '/') {
    return navigateTo('/')
  }
})
在中间件目录之外,不支持使用 defineNuxtRouteMiddleware
Nuxt Bridge 不支持 definePageMeta