什么是动态路由

3,248 阅读3分钟

1 什么是动态路由:

工作中经常用到的情况就是,在导航菜单中,如果没有登录,我们则只展示一部分信息,如果登录,再将其余的信息展示,这就是动态路由,此时我们不需要在手动配置路由,后端将路由数据返回,我们拿到数据,进行匹配。## 1、什么是动态路由?

动态路由,动态即不是写死的,是可变的。我们可以根据自己不同的需求加载不同的路由,做到不同的实现及页面的渲染。动态的路由存储可分为两种,一种是将路由存储到前端。另一种则是将路由存储到数据库。动态路由的使用一般结合角色权限控制一起使用。

总结:

     1)路由可变,不是写死的,动态加载

     2)存储分两种:存前端,存数据库

2、动态路由的好处

使用动态路由可以跟灵活,无需手工维护,我们可以使用一个页面对路由进行维护。如果将路由存储到数据库,还可以增加安全性。

总结:

     1)灵活,无需手工维护

     2)增加安全性

3、动态路由如何实现

在此以路由存储在数据库为例

流程:一般我们在登录的时候,根据登录用户的角色返回此角色可以访问的页面的路由,前端将路由存储到vuex(vuex存储的数据必须可持久的,不要一刷新页面就不见),我们在路由前置守卫处动态添加拿到的路由,对页面进行渲染。

1)此为我的router目录,index.js对路由添加,守卫拦截等处理。static-route.js为前端定义的静态路由,不需要动态加载的,如登陆页面,忘记密码页面,404页面等- 一、前端控制

动态路由只要是依仗于vue-router实例router提供的addRoutes函数,可以让我们在[路由表中]|(路由配置中),动态添加路由对象的能力,从而达到动态路由的目的.

1)优点: 当你的路由表信息由于是动态导入的,所以,对于那些没有配置的到路由信息里的组件,即使你知道路由链接,也无法访问.可以很好的做好的权限管理.

方法 a、将一些公共路由,写入到./router/index.js中.(公共权限)

b、从后台获取用户角色(或者动态路由信息),将这些动态路由数据,通过router.addRoute注册到路由表中.

c、还是要将所有的组件和结构准备好.

注意:

由于你路由的动态加载的.

所以相应的你的路由点击链接也应该是动态加载的.

模板上依赖于你的动态路由来循环v-for出点击链接.

所以,你需要使用一个响应式的对象来存储动态路由链接信息列表.

两种方式去添加动态路由,一种是在登录后查询路由表保存到vuex或者localStore下,然后通过前置守卫来动态的添加路由,另一种就是登陆之后使用$router.addRoute直接添加路由,后者并不推荐,因为再刷新页面的时候会出现无法找到页面的情况

这里也包含从哪个地方注册进动态路由信息以及路由信息缓存的问题.