插件和中间件

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

插件

插件现在采用了不同的格式,仅接受一个参数(nuxtApp)。

export default (ctx, inject) => {
  inject('injected', () => '我的注入函数')
})
阅读更多 Docs > Guide > Directory Structure > Plugins.
了解更多关于nuxtApp格式的信息。

迁移

  1. 将您的插件迁移到使用defineNuxtPlugin辅助函数。
  2. nuxt.config的插件数组中移除位于plugins/文件夹中的任何条目。plugins/目录顶层中的所有文件(以及任何子目录中的index文件)都将被自动注册。您无需通过设置modeclientserver来指定运行模式,而是可以在文件名中指明。例如,~/plugins/my-plugin.client.ts将仅在客户端加载。

路由中间件

路由中间件的格式有所不同。

export default function ({ store, redirect }) {
  // 如果用户未认证
  if (!store.state.authenticated) {
    return redirect('/login')
  }
}

与Nuxt 2类似,放置在~/middleware文件夹中的路由中间件会自动注册。然后,您可以在组件中通过名称指定它。然而,这需要使用definePageMeta而不是作为组件选项。

navigateTo是众多路由辅助函数之一。

阅读更多 Docs > Guide > Directory Structure > Middleware.

迁移

  1. 将您的路由中间件迁移到使用defineNuxtRouteMiddleware辅助函数。
  2. 任何全局中间件(例如在nuxt.config中定义的)可以放置在~/middleware文件夹中,并使用.global扩展名,例如~/middleware/auth.global.ts