当前位置: 首页 > news >正文

《Vue Router实战教程》14.路由元信息

欢迎观看《Vue Router 实战(第4版)》视频课程

    1. 路由元信息

有时,你可能希望将任意信息附加到路由上,如过渡名称、谁可以访问路由等。这些事情可以通过接收属性对象的meta属性来实现,并且它可以在路由地址和导航守卫上都被访问到。定义路由的时候你可以这样配置 meta 字段:

const routes = [

  {

    path: '/posts',

    component: PostsLayout,

    children: [

      {

        path: 'new',

        component: PostsNew,

        // 只有经过身份验证的用户才能创建帖子

        meta: { requiresAuth: true },

      },

      {

        path: ':id',

        component: PostsDetail

        // 任何人都可以阅读文章

        meta: { requiresAuth: false },

      }

    ]

  }

]

那么如何访问这个 meta 字段呢?

首先,我们称呼 routes 配置中的每个路由对象为 路由记录。路由记录可以是嵌套的,因此,当一个路由匹配成功后,它可能匹配多个路由记录。

例如,根据上面的路由配置,/posts/new 这个 URL 将会匹配父路由记录 (path: '/posts') 以及子路由记录 (path: 'new')。

一个路由匹配到的所有路由记录会暴露为 route 对象(还有在导航守卫中的路由对象)的route.matched 数组。我们需要遍历这个数组来检查路由记录中的 meta 字段,但是 Vue Router 还为你提供了一个 route.meta 方法,它是一个非递归合并所有 meta 字段(从父字段到子字段)的方法。这意味着你可以简单地写

router.beforeEach((to, from) => {

  // 而不是去检查每条路由记录

  // to.matched.some(record => record.meta.requiresAuth)

  if (to.meta.requiresAuth && !auth.isLoggedIn()) {

    // 此路由需要授权,请检查是否已登录

    // 如果没有,则重定向到登录页面

    return {

      path: '/login',

      // 保存我们所在的位置,以便以后再来

      query: { redirect: to.fullPath },

    }

  }

})

      1. TypeScript

也可以继承来自 vue-router 中的 RouteMeta 来为 meta 字段添加类型:

// 这段可以直接添加到你的任何 `.ts` 文件中,例如 `router.ts`

// 也可以添加到一个 `.d.ts` 文件中。确保这个文件包含在

// 项目的 `tsconfig.json` 中的 "file" 字段内。

import 'vue-router'

// 为了确保这个文件被当作一个模块,添加至少一个 `export` 声明

export {}

declare module 'vue-router' {

  interface RouteMeta {

    // 是可选的

    isAdmin?: boolean

    // 每个路由都必须声明

    requiresAuth: boolean

  }

}

相关文章:

  • MySQL逻辑架构有什么?
  • JavaScript学习教程,从入门到精通,JavaScript 数组与引用类型语法知识点及案例代码(10)
  • 三大开源大模型应用框架深度对比:AnythingLLM、Dify 与 Open-WebUI
  • XML、JSON 和 Protocol Buffers (protobuf) 对比
  • ESP32开发入门:基于VSCode+PlatformIO环境搭建指南
  • 在Oracle数据库中,一条SQL查询请求的执行过程是一个复杂且精细的流水线
  • CSS学习02 动态列数表格开发,解决多组数据布局与边框重合问题
  • WEB前端开发中常用的算法
  • 布局决定终局:基于开源AI大模型、AI智能名片与S2B2C商城小程序的战略反推思维
  • 从Function Calling到Tool Calling:Spring AI架构升级背后的技术考量
  • Git 高级操作
  • VMWare Workstation 17 安装 Ubuntu24.02
  • pycharm如何通过跳板机连接服务器在本地debug
  • Pytorch torch.utils.data.dataloader.default_collate 介绍
  • CTF web入门之命令执行 完整版
  • Git代码管理
  • 代码随想录-06-二叉树-05.01 二叉树的层序遍历
  • 【股票数据API接口19】如何获取股票主力资金走势数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • 【力扣hot100题】(088)分割等和子集
  • MySQL-多表查询-自连接联合查询子查询
  • 厦门网站建设价格/域名注册时间查询
  • 做自媒体要知道的网站/软文写作范文
  • 七牛 wordpress 插件/免费seo培训
  • 医院网站建设情况说明/长春网站优化服务
  • 网站首页不见怎么做/信息流广告文案
  • 做网站那些好/国际重大新闻事件10条