菜单及路由
FiveAdmin 的菜单和路由是强绑定的,菜单是读取的路由信息来构建的。
路由相关文件在 /src/router/ 目录下
关于路由器的创建、全局路由守卫及路由白名单在 /src/router/index.js 文件中
新增菜单及路由
在 /src/router/modules/ 目录下定义的路由文件会在用户登录后自动注册,没有登录的情况下这里定义的路由是访问不到的。
是否在菜单显示是根据路由的 meta配置决定,当路由没有 meta 属性时默认不在菜单中显示。
注意
多级路由的 path 需要写全路径并且必须以 / 开头
// /src/router/modules/dashboard.js
export default {
path: '/dashboard',
name: 'Dashboard',
redirect: '/dashboard/analysis',
meta: {
title: '仪表盘',
},
children: [
{
path: '/dashboard/analysis',
name: 'Analysis',
meta: {
title: '分析页',
},
component: () => import('@/views/dashboard/analysis/index.vue'),
},
{
path: '/dashboard/workbench',
name: 'Workbench',
meta: {
title: '工作台',
},
component: () => import('@/views/dashboard/workbench/index.vue'),
},
],
}
基础路由
基础路由信息在 /src/router/base.js 中,无需登录也可以访问路由需要放在这里并加入路由白名单。
// /src/router/base.js
export default [
{
path: '/login',
name: 'Login',
component: () => import('@/views/login/index.vue'),
},
{
path: '/:path(.*)*',
name: 'NotFound',
component: () => import('@/views/error-page/404.vue'),
},
]
路由白名单
路由路径设置为白名单后,在用户不登陆的情况下也可以访问
这里新增一个白名单路由地址作为示例,如:将 /home 路径添加到白名单
- 新增一个路由信息
// /src/router/base.js
export default [
{
path: '/home',
name: 'Home',
component: () => import('@/views/home/index.vue'),
},
// ....
]
- 将路由信息添加到白名单
// /src/router/index.js
export const WHITE_LIST = ['/home']
注意
白名单路由必须定义在 /src/router/base.js 中,并且白名单的路由页面只能被显示在 layout 外。
meta配置
当路由信息中没有 meta 属性时,此路由默认不显示在菜单中。
{
// 在菜单中显示的标题。可以是中文或多语言文本模板。
title:String,
// 在菜单中显示的图标。使用的自定义的 SvgIcon 组件渲染,可以是本地图标或网络中的资源。
icon:String,
// 是否在菜单中隐藏。(选填,默认为 false)
isHide: Boolean,
// 是否在菜单中隐藏所有子级。(选填,默认为 false)。注意,只有当 isHide 为 true 时生效
hideChildren: Boolean,
// 如果有值并以 http: 或 https: 开头,则以外链内嵌方式打开
iframeLink:String,
// 在 layout 框架外打开。(选填,默认为 false)。如登录页面,数据大屏等。
isOuter:Boolean,
// 可以访问的角色编码。(选填,默认为空值)
// 为 [] 时所有角色都不可以访问,为空值时所有角色都可以访问
// 当没有权限访问时 hideChildren 永远为 true。
roles:Array|String,
// 是否缓存组件实例。(选填,默认为 false)。
// 注意:组件名要与对应路由的 name 相同
isKeep:Boolean,
// 多标签页模式下是否固定在标签页。(选填,默认 false)
fixedTab: Boolean,
// 页面切换动画。(选填)
transition:String,
// 排序号,仅对一级菜单有效(仅后端路由模式无效)
sortNo:Number,
}
外链
只需要将路由的 path 以 http: 或 https: 开头即可,不需要以 / 开头。
{
path: 'https://www.baidu.com',
name: 'Baidu',
meta: {
title: '百度',
},
},
外链内嵌
需要将 meta.iframeLink 设置为需要嵌套的链接地址
如果路由来源设置的是前端,还需要将 component 设置为 () => import('@/layout/main/LayoutIframe.vue')
如果路由来源设置的是后端,或前后端混合,则不需要配置 component,程序在加载路由时会自动将 component 设置为 LayoutIframe
{
path: '/test',
name: 'Test',
meta: {
title: '测试外链内嵌',
iframeLink: 'https://localhost:8888',
},
component: () => import('@/layout/main/LayoutIframe.vue'),
}
Layout外部页面
如数据大屏需要在 Layout 布局外显示的页面,需要将 meta.isOuter 设置为 true
{
path: '/screen',
name: 'BigScreen',
meta: {
title: '数据大屏展示',
isOuter: true,
},
component: () => import('@/views/demo/data-big-screen/BigScreen1.vue'),
},
默认首页
首页是当用户登录成功之后默认跳转的页面,或者在地址栏输入 / 直接访问的页面。
默认首页是可配置的,可以全局配置或用户单独配置,用户配置优先。
在 .env 文件中全局配置
// .env
VITE_APP_HOME_PATH = /home
为用户单独配置只需要设置用户信息的 homePath 属性值即可