前端路由中的meta、matched是什么?有哪些作用?

在前端路由中,尤其是在 Vue.js 这样的框架中,metamatched 是两个常见的概念,它们提供了关于路由的额外信息和上下文

1. meta

一个可以附加到 Vue Router 路由定义上的自定义字段

它通常用于存储一些与路由相关的元数据或信息,这些信息不直接参与路由的匹配,但可以在路由的导航守卫(如 beforeEach)或组件内部使用

例如,可以使用 meta 来存储一个路由是否需要身份验证的信息:

javascript 复制代码
const routes = [  
  {  
    path: '/user',  
    component: User,  
    meta: { requiresAuth: true }  
  },  
  // ...其他路由  
]

然后,在路由的导航守卫中,可以检查这个 meta 字段来决定是否允许用户访问该路由:

javascript 复制代码
router.beforeEach((to, from, next) => {  
  if (to.matched.some(record => record.meta.requiresAuth)) {  
    // 检查用户是否已登录  
    // 如果未登录,则重定向到登录页面  
  } else {  
    next(); // 确保一定要调用 next()  
  }  
})

2. matched

matched 是一个数组,包含了当前路由匹配到的所有路由记录(route records)

当路由被匹配时,Vue Router 会遍历路由配置数组,并找到所有匹配的路由记录。这些记录按照定义顺序从父路由到子路由进行排序。

每个路由记录都是一个对象,包含了路由的许多信息,如 pathcomponentsmeta 等。因此,可以通过 matched 数组访问到这些路由记录的信息。

假设有如下的路由配置:

javascript 复制代码
const routes = [  
  {  
    path: '/user/:id',  
    component: User,  
    children: [  
      {  
        path: 'profile',  
        component: UserProfile  
      },  
      {  
        path: 'posts',  
        component: UserPosts  
      }  
    ]  
  }  
]

当用户访问**/user/123/profile** 时,matched 数组将包含两个路由记录:一个是 /user/:id 的父路由记录,另一个是 /user/:id/profile 的子路由记录。可以通过**to.matched**在导航守卫或组件内部访问这些路由记录


总之,metamatched 提供了关于路由的额外信息和上下文,能够更灵活地控制路由的行为和组件的渲染

相关推荐
jayaccc2 分钟前
Webpack配置详解与实战指南
前端·webpack·node.js
南囝coding2 分钟前
发现一个宝藏图片对比工具!速度比 ImageMagick 快 6 倍,还是开源的
前端
前端小黑屋10 分钟前
查看 Base64 编码的字体包对应的字符集
前端·css·字体
每天吃饭的羊21 分钟前
媒体查询
开发语言·前端·javascript
XiaoYu20021 小时前
第8章 Three.js入门
前端·javascript·three.js
这个一个非常哈1 小时前
element之,自定义form的label
前端·javascript·vue.js
阿东在coding1 小时前
Flutter 测试框架对比指南
前端
是李嘉图呀1 小时前
npm推送包失败需要Two-factor权限认证问题解决
前端
自己记录_理解更深刻1 小时前
本地完成「新建 GitHub 仓库 react-ts-demo → 关联本地 React+TS 项目 → 提交初始代码」的完整操作流程
前端
借个火er1 小时前
Chrome 插件开发实战:5 分钟上手 + 原理深度解析
前端