返回介绍

插件和中间件 Plugins and Middleware

发布于 2024-04-18 00:42:18 字数 1712 浏览 0 评论 0 收藏 0

Plugins

插件现在有一种不同的格式,并且只接受一个参数(nuxtApp)。 在 文档 中阅读更多内容。

Nuxt 2
export default ((ctx, inject) => {
  inject('injected', () => '我注入的功能')
})
Nuxt 3
export default defineNuxtPlugin(nuxtApp => {
  // 现在可在 `nuxtApp.$injected` 上使用
  nuxtApp.provide('injected', () => '我注入的功能')

  // 您也可以使用这种格式,它带有自动类型支持
  return {
    provide: {
      injected: () => '我注入的功能'
    }
  }
})

您可以在 文档 中阅读更多关于 nuxtApp 格式的信息。

迁移步骤

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

Nuxt 2
export default function ({ store, redirect }) {
  // 如果用户未通过身份验证
  if (!store.state.authenticated) {
    return redirect('/login')
  }
}
Nuxt 3
export default defineNuxtRouteMiddleware((to, from) => {
  const auth = useState('auth')
  if (!auth.value.authenticated) {
    return navigateTo('/login')
  }
})

与 Nuxt 2 非常相似,放在 ~/middleware 文件夹中的路由中间件会自动注册。 然后您可以在组件中按名称指定它。 但是,这是通过“definePageMeta”完成的,而不是作为组件选项。

navigateTo 是众多路由辅助函数之一,您可以在 关于路由中间件的文档 中阅读更多相关信息。

迁移步骤

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文