路由和侧边栏
大约 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> 缓存
}
}]
}
路由
这里的路由分为两种,constantRoutes
和 asyncRoutes
。
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" }
}
]
}