赞
踩
目录
vue前端路由可区分和管理不同的页面,并且给页面中的router-link标签提供跳转所需的path等参数,是前端页面切换的主要途径之一。
vue路由有个重要的常数routes,是创建路由必须的参数对象。routes默认每一个路由都有对应的name、path、component基本属性。
一般情况下,通过设置routes参数,可以实现路由的名称、路径和对应的组件管理,也可以通过对path属性设置参数,或使用正则表达式来实现动态路由管理。
但是在使用routes管理大批量,层级较多,结构较复杂,极有可能包含重复名称或重复路径的路由时,不方便手动设置、实现起来容易出错。即使用插件解决了批量引入的问题,面对众多的层级和名称,手动写入每层路由的name和path是不现实的,还有meta等参数需要分层管理。比如:
场景:用路由管理大批、层级结构复杂的前端路由,就像很厚的书本目录一样,并且要求生成对应的目录,让目录分层显示并且产生相应的连接。
关于规则的设定,可参考此文章底部实现源码中的几个文件及注释:
- src\router\routerScript\routerMenus.js的注释
- src\router\routerScript\文件夹下:routerMaker.js、routerMeta.js、routerQuery.js文件,这几个文件是动态生成routes的中间函数,根据实际使用调整
解决方案的步骤如下:
- 设定一个常数来集中管理参数,该常数包含纯层级和路由;
- 使用一套中间处理函数,来动态生成routes,和带有纯层级的map,这个map可以用于生成目录;
- 在.vue文件中,通过v-if、v-for循环遍历生成的map,来动态生成标签。并且通过methods中的函数,将子层写入父层,从而完成层级嵌套。生成的层级嵌套标签,样式不是固定的,可以根据需求调整css和响应的函数。
路由按照层级批量生成,并且按照源数据的父子层级嵌套,层级可展开/关闭,初始状态可以设置展开哪些层级,下图中展示了目录的关闭/展开效果:
如果你使用UI框架,并且UI框架具备绑定参数动态生成菜单的功能,请自行将map转换为所需的数据格式,从而更方便地生成视图元素。
代码已经整合到我的微型项目合集里,预览或下载源码可使用以下链接:
前端路由、目录动态生成和分层管理实现https://an-ant-watcher.gitee.io/componentsDIY/home?vNum=1.5.3.1653030441931_beta
在线预览用的是免费的gitee-pages,可能需要加载一会儿,或尝试手动刷新。
我的微型项目合集源码下载https://gitee.com/an-ant-watcher/componentsDIY.git
如有疑问或建议,请在博客下方发表留言。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。