Nuxt - middleware 路由中间件

官方文档:https://nuxt.com.cn/docs/guide/directory-structure/middleware

1 中间件类别

  • 内联路由中间件,直接在页面内定义。
  • 命名路由中间件,放置在 middleware/ 目录下,导入在页面中。
  • 全局路由中间件,放置在 middleware/ 目录下,并以 .global 后缀结尾,在每次路由更改时运行。

2 中间件执行顺序

全局路由中间件 =》 内联路由中间件 =》 命名路由中间件

3 内联路由中间件

<script setup lang="ts">
definePageMeta({
  middleware: [
    function (to, from) {
      // 自定义内联中间件
    },
  ],
});
</script>

4 命名路由中间件

<script setup lang="ts">
definePageMeta({
  middleware: ['auth'],
});
</script>

middleware/auth.ts:

export default defineNuxtRouteMiddleware((to, from) => {
  if (to.params.id === '1') {
    return abortNavigation()
  }
  // 在实际应用中,你可能不会将每个路由重定向到 `/`
  // 但是在重定向之前检查 `to.path` 是很重要的,否则可能会导致无限重定向循环
  if (to.path !== '/') {
    return navigateTo('/')
  }
})

Nuxt 提供了两个全局可用的辅助函数,可以直接从中间件中返回。

  • navigateTo - 重定向到给定的路由
  • abortNavigation - 中止导航,并可选择提供错误消息。

与vue-router的导航守卫不同,中间件不会传递第3个 next() 参数,重定向或取消路由由从中间件返回的值处理。

可能的返回值有:

  • 无 - 不阻止导航,将继续执行下一个中间件函数(如果有的话),或者完成路由导航
  • return navigateTo(‘/’) - 重定向到给定的路径,并在服务器端发生重定向时设置重定向代码为 302 Found
  • return navigateTo(‘/’, { redirectCode: 301 }) - 重定向到给定的路径,并在服务器端发生重定向时设置重定向代码为 301 Moved Permanently
  • return abortNavigation() - 停止当前的导航
  • return abortNavigation(error) - 拒绝当前的导航并提供错误信息

5 全局路由中间件

放置在 middleware/ 目录下,并以 .global 后缀结尾

middleware/
--| analytics.global.ts

相关推荐

  1. Nuxt - middleware 中间

    2024-06-06 06:48:04       31 阅读
  2. Backend - Django Middleware 中间

    2024-06-06 06:48:04       41 阅读
  3. C#面:简述什么是中间Middleware)?

    2024-06-06 06:48:04       26 阅读
  4. nuxt3 相关

    2024-06-06 06:48:04       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 06:48:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 06:48:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 06:48:04       87 阅读
  4. Python语言-面向对象

    2024-06-06 06:48:04       96 阅读

热门阅读

  1. 007 异步同步

    2024-06-06 06:48:04       21 阅读
  2. DNS域名

    DNS域名

    2024-06-06 06:48:04      28 阅读
  3. oracle 核心进程

    2024-06-06 06:48:04       26 阅读
  4. Oracle通过datax迁移线上表到历史库

    2024-06-06 06:48:04       26 阅读
  5. [Mac软件]Leech for Mac v3.2 - 轻量级mac下载工具

    2024-06-06 06:48:04       23 阅读
  6. Oracle中clob怎么拼接字符

    2024-06-06 06:48:04       31 阅读
  7. 从0开始读C++Primer|第一章 开始

    2024-06-06 06:48:04       30 阅读