路由与导航菜单结合,对RouteConfig进行改造

2,990 阅读1分钟

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属性内

  1. 增加hidden
    不是所有的route都会被显示到菜单中,因此,我们可以通过hidden属性决定该route是否显示到导航中 可以对菜单建立一个模型。
  2. 增加title
    用来显示菜单标题
  3. 增加icon
    用来显示菜单图标
  4. 增加activeMenu
    一般情况下当前uri中获得的路径数据( this.$route.path)即可以找到处于active状态菜单,但是有些route不显示在菜单中,但是它会一个菜单相关,当这个route被路由时,需要找到对应的菜单以给该菜单加active状态
  5. 利用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/…