路由和侧边栏

大约 3 分钟

路由和侧边栏

路由和侧边栏是组织起一个后台应用的关键骨架。

本项目侧边栏和路由是绑定在一起的,所以你只有在 @/router/index.js 下面配置对应的路由,侧边栏就能动态的生成了。大大减轻了手动重复编辑侧边栏的工作量。当然这样就需要在配置路由的时候遵循一些约定的规则。

配置项

首先我们了解一些本项目配置路由时提供了哪些配置项。

//当设置 true 的时候该路由不会在侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
hidden: true // (默认 false)

//当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
redirect: 'noRedirect'

//当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
//只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
//若你想不管路由下面的 children 声明的个数都显示你的根路由
//你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
alwaysShow: true

name: 'router-name' //设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
meta: {
  title: 'title' //设置该路由在侧边栏和面包屑中展示的名字
  icon: 'svg-name' //设置该路由的图标 (默认是 system ,目前暂不支持改变)
  noCache: true //如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
  breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示(默认 true)
  affix: true // 如果设置为true,则当前路由菜单会固定在页面标签导航中 (不可被删除)(默认 false)
}

示例:

{
  path: '/permission',
  component: Layout,
  redirect: '/permission/index', //重定向地址,在面包屑中点击会重定向去的地址
  hidden: true, // 不在侧边栏线上
  alwaysShow: true, //一直显示根路由
  children: [{
    path: 'index',
    component: ()=>import('permission/index'),
    name: 'permission',
    meta: {
      title: 'permission',
      icon: 'lock', //图标
      noCache: true // 不会被 <keep-alive> 缓存
    }
  }]
}

路由

这里的路由分为两种,constantRoutesasyncRoutes

constantRoutes: 代表那些不需要动态判断权限的路由,如登录页、404、等通用页面。

asyncRoutes: 代表那些需求动态判断权限并通过 addRoutes 动态添加的页面。

提示

这里所有的路由页面都使用 路由懒加载

constantRoutes

如果你在开发时需要自己自定义自己的 constantRoutes 路由可以在 @/router/modules 内增加自己的路由,可以使用自动生成工具快速生成路由,增加后的路由文件会自动引入 @/router/index.js 文件内无需手动引入。

不全 TODO

asyncRoutes

请参考:统一权限菜单配置

多级目录嵌套路由

如果你的路由是多级目录,有三级路由嵌套的情况下,不要忘记还要手动在二级目录的根文件下添加一个 <router-view>

原则上有多少级路由嵌套就需要多少个<router-view>

侧边栏外链

你也可以在侧边栏中配置一个外链,只要你在 path 中填写了合法的 url 路径,当你点击侧边栏的时候就会帮你新开这个页面。

例如:

{
  "path": "element",
  "component": Layout,
  "children": [
    {
      "path": "https://element.eleme.cn/",
      "meta": { "title": "element", "icon": "link" }
    }
  ]
}
上次编辑于: