$route.fullPath
1 路由是:/path/:type真正路径是:/path/list
2 path匹配路径: /path/list
3 fullPath匹配路由: /path/:type
路由元信息 .meta
const router = new VueRouter({ routes: [ { path: '/foo', component: Foo, children: [ { path: 'bar', component: Bar, // a meta field meta: { requiresAuth: true ,keepAlive:true}//1.权限 2.内存缓存,单页面切换 } ] } ] })
先理解什么是路由记录 : 路由记录就是 routes 配置数组中的对象副本 (还有在 children 数组)。
上方代码中的路由记录见下方:
//一级路由 { path: '/foo', component: Foo, children: [ { path: 'bar', component: Bar, // a meta field meta: { requiresAuth: true ,keepAlive:true}//1.权限 2.内存缓存,单页面切换 } ] } //一级路由的子路由 { path: 'bar',component: Bar,meta: { requiresAuth: true ,keepAlive:true } } //两者都是 路由记录
1 定义路由的时候可以配置 meta 字段
2 根据上面的路由配置,/foo/bar 这个 URL 将会匹配父路由记录以及子路由记录
3 一个路由匹配到的所有路由记录会暴露为 $route 对象 (还有在导航守卫中的路由对象) 的 $route.matched 数组。
4 检查路由记录中的 meta 字段 ,我们需要遍历 $route.matched
$route.matched
1 一个数组,包含当前路由的所有嵌套路径片段的路由记录
2 一个路由匹配到的所有路由记录会暴露为 $route 对象 (还有在导航守卫中的路由对象) 的 $route.matched 数组
路由元信息 .meta $route.matched 搭配路由守卫 进行验证
router.beforeEach((to, from, next) => { if (to.matched.some(record => record.meta.requiresAuth)) { // this route requires auth, check if logged in // if not, redirect to login page. if (!auth.loggedIn()) { next({ path: '/login', query: { redirect: to.fullPath } }) } else { next() } } else { next() // 确保一定要调用 next() } })
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!