# 导航配置

# 基础格式

Vue Admin Next 的默认布局通过 src/common/config/nav.js 配置导航菜单,采用了可任意嵌套的数据格式。数据结构如下:















 



;[
  {
    key: String, // 唯一标识
    name: String, // 显示名称
    icon: String, // 图标,默认仅一级菜单支持
    links: [
      // 当前层级的链接,默认路由模式
      {
        name: String, // 链接名称
        path: String, // 链接路径
        alias: String, // 可选;用于权限判断,一般用于 path 为外部链接的场景
        target: String, // 可选;存在 target 属性时使用 a 标签
      },
    ],
    children: [SubmenuConfig], // 嵌套的子菜单,格式同最外层配置
  },
]

提示

默认仅支持两级子菜单的显示,可以通过全局 store 中的 ui.submenuMaxLevel 进行设置。

配置示例参考 src/common/config/nav.js

# 为什么不通过路由配置自动生成导航?

在大型后台系统中,复杂模块内部通常会包含很多子页面,大部分页面都不需要通过导航进行跳转。通过独立的导航配置可以按需添加,避免让路由配置变得繁琐。

# 导航权限判断

在遍历导航配置时,Vue Admin Next 会根据用户权限进行过滤。判断方式如下:

  • 父级菜单,通过 authService.hasNavAuth(key) 进行判断
  • 路由链接,通过 authService.hasURIAuth(path) || authService.hasAliasAuth(alias) 进行判断

提示

实现参考源码 src/common/services/AuthService.js,实际项目中根据业务场景可以进行修改。

参考示例:




 






 





 
 





;[
  {
    // 需要权限 AUTH_nav_dashboard
    key: 'dashboard',
    name: '控制台',
    icon: 'el-icon-odometer',
    links: [
      {
        name: '示例模块',
        // 需要权限 /examples,支持正则匹配
        path: '/examples',
      },
      {
        name: 'Github',
        target: '_blank',
        // 需要权限 AUTH_alias_github_repo
        alias: 'github_repo',
        path: 'https://github.com/openfext/vue-admin-next',
      },
    ],
  },
]