vue动态加载路由的3种方式总结
vue动态加载路由3种方式
使用场景
后管系统,处理不同角色,不同权限,显示不同菜单。
目的
根据需求,动态加载路由,处理后台返回的不同菜单权限。
方法
方法一:
注册所有路由,根据后台返回菜单数据,显示菜单。
弊端:路由全部注册,菜单没有显示;用户可以手动更改url值,依然会显示当前组件。
方法二:
前端手动写好,根据不同的角色,创建多个不同的路由,根据登录的角色,动态的加载某个数组。
弊端:如果后台新增角色,那么只有修改前端代码,重新部署。
方法三(推荐):
菜单动态生成路由映射
菜单->url->路由->path->component(数组,routes)
后台返回的菜单,有url;url对应的是路由里面的path;path对面不同的组件。
- 菜单中有加载组件的名称component(名称/路径必须和前端写好的一致,不可移动组件位置)
- (推荐)直接根据菜单的url。查找前端代码中的对应关系。生成数组routes
注意:
根据业务需求自行选择
vue动态添加路由后刷新失效
当添加路由addRoutes的时候,正常点击是没问题的,但是刷新一次页面,那么动态添加的路由就会失效,
用getRoutes() 打印出来看的时候确定路由已经添加进去了,所以这个原因应该是
当你执行到addRoutes时,路由要添加进去了,但是,路由不是响应式的,从执行循序来看,地址栏快于路由的添加,那找不到这个路径了就只能白屏了,除非设置了404的页面
那么怎么解决这个问题, 只需要再进行一次拦截就好了,代码如下:

实测过,这样已经解决刷新页面空白的问题了,
同学们可以参考一下,具体问题还是要具体分析
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决父组件将子组件作为弹窗调用只执行一次created的问题
这篇文章主要介绍了解决父组件将子组件作为弹窗调用只执行一次created的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-07-07
Vue 3 + Element Plus 封装单列控制编辑的可编辑表格
在Web应用开发中实现表格数据编辑功能至关重要,本文将详细介绍如何使用Vue3和ElementPlus库来构建一个支持单列编辑的表格组件,本教程详细阐述了组件创建过程和数据绑定机制,帮助你快速掌握Vue3中表格编辑功能的实现,感兴趣的朋友一起看看吧2024-09-09
vue3集成Element-plus实现按需自动引入组件的方法总结
vue3出来一段时间了,element也更新了版本去兼容vue3,下面这篇文章主要给大家介绍了关于vue3集成Element-plus实现按需自动引入组件的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下2022-07-07
一文带你搞懂Vue中Provide/Inject的使用与高级应用
这篇文章将详细介绍如何在 Vue.js 中使用 provide 和 inject 模式,并探讨其在实际应用中的高级用法,感兴趣的小伙伴可以跟随小编一起学习一下2024-11-11


最新评论