# 动态路由
动态路由就是动态地非配路由权限。根据不同的场景来分配你可以访问哪些路由(页面),最简单常见的就是角色分配,比如系统有普通用户和管理员两种角色,有些页面只能管理员能访问,普通用户不能。动态路由的职责就是给不同的角色分配他们能访问的路由。
动态路由的实现 实现思路:登陆之后后台返回路由列表,前端把后台传的这些列表填加到路由上
首先一般路由会分为两种:
- 通用路由: 不需要动态判断权限的路由,eg:登陆页,通用页
- 动态路由: 需要动态判断权限并通过
addRoutes动态添加的页面
首先在 router.js 定义通用路由
定义一个过滤路由的函数,遍历后台传回来的路由字符串,转换为组件对象
//因为后台传过来的component是一个字符串,前端需要处理一下
route.component = () => import(`@/${routeMap[route.name]}`)
创建路由守卫,在路由钩子函数router.beforeEach判断是否可访问指定的页面
首先判断是否登陆,然后判断是否加载了动态路由,
将过滤出来的路由组件通过router.addRouter动态添加路由,并存入VueX的state中
//每次添加前需要重置一下
router.match = createRouter(routes).match//重置路由
router.addRoutes(routes) // 动态添加可访问路由表