vue-router中对路由配置选项建立了一个数据模型接口RouteConfig:
参考 router.vuejs.org/zh/api/#rou…
源码见 github.com/vuejs/vue-r…
3.0源码见 github.com/vuejs/vue-r… (RouteRecordRaw 扩展于 _RouteRecordBase ,meta属性类型限定:Record<string | number | symbol, any>待研究)
对于路由数据RouteConfig,由于菜单和路由关系紧密,为避免菜单数据和路由数据不集中,更改重复的情况,我们可以将菜单数据放在RouteConfig中。以达到通过路由数据生成导航菜单的目的,建议将新增属性都放在meta属性内
- 增加hidden
不是所有的route都会被显示到菜单中,因此,我们可以通过hidden属性决定该route是否显示到导航中 可以对菜单建立一个模型。 - 增加title
用来显示菜单标题 - 增加icon
用来显示菜单图标 - 增加activeMenu
一般情况下当前uri中获得的路径数据( this.$route.path)即可以找到处于active状态菜单,但是有些route不显示在菜单中,但是它会一个菜单相关,当这个route被路由时,需要找到对应的菜单以给该菜单加active状态 - 利用RouteConfig的children属性,为children中的每个RouteConfig中的添加以上新增属性,可以构建多级(嵌套)菜单
嵌套菜单UI参考 panjiachen.github.io/vue-element…
嵌套路由菜单RouteConfig数据参考 github.com/PanJiaChen/…
嵌套菜单源码参考 github.com/PanJiaChen/… 主要通过hasOneShowingChild函数判断是否有子菜单,然后通过递归组件完成
递归组件参考官方文档 cn.vuejs.org/v2/guide/co…
改造的RouteConfig配置参考 github.com/PanJiaChen/…