路由配置
gitcx
路由加载实现 3 种方案:
• 前端进行拦截,路由写在src/router/index.js下,角色权限清晰不会随意变更时,,配置authentication: "intelligence",rolesControl:true,参数项在src/config/setting.config.js中配置
• 后端返回路由但由前端过滤权限拦截,配置authentication: "all",rolesControl:true,后端返回接口格式可参照mock/controller/router.js,参数项在src/config/setting.config.js中配置
• 后端返回处理好权限逻辑的路由,,配置authentication: "all",rolesControl:false,路由 JSON 无需再返回 guard 字段,后端返回接口格式可参照 mock/controller/router.js,参数项在src/config/setting.config.js中配置
# 路由配置项
语法与 vue-router 语法一致,具体详见src/router/index.js
使用前请务必阅读 https://router.vuejs.org/zh/ (opens new window)
{
"name": "Demo", //首字母大写,一定要与vue文件的name对应起来,name名不可重复,用于noKeepAlive缓存控制(该项特别重要)
"path": "/", //注意根路由(第一条数据)是斜线,第一级路由必须带斜线,第二级路由开始不能,path名不可重复
"component": "Layout", //后端路由时此项为字符串,前端路由时此项为import的function,第一级路由是为Layout,其余为层级为vue的文件路径
"redirect":"" //重定向到子路由,格式从第一级路由开始拼接(默认可不写)
"meta": {
"hidden": true, //2021年5月23日后新版用法:是否显示在菜单中显示隐藏路由(默认值:false)
"levelHidden": false, //2021年5月23日后新版用法:是否显示在菜单中显示隐藏一级路由(默认值:false)
"title": "title", //菜单、面包屑、多标签页显示的名称
"guard": ["Admin", "..."], //2021年9月份版本,当config/settings.js中rolesControl配置开启时,用于控制角色(简写)
"guard": {
//2021年9月份新版本,当config/settings.js中rolesControl配置开启时,用于控制角色(全写)
"role": ["Admin", "..."],
"mode": "allOf" //allOf: 数组内所有角色都拥有,返回True oneOf: 数组内拥有任一角色,返回True(等价第1种数据) except: 不拥有数组内任一角色,返回True(取反)
},
"icon": "", //新版
"isCustomSvg": false, //是否是自定义svg图标(默认值:false,如果设置true,那么需要把你的svg拷贝到icon下,然后icon字段配置上你的图标名)
"noKeepAlive": true, //当前路由是否不缓存(默认值:false)
"noClosable": true, //当前路由是否可关闭多标签页,同上(2021年10月后新版支持)
"noColumn":false, //是否隐藏分栏,仅在分栏布局中二级路由生效(默认值:false)
"badge": "New", //badge小标签(只支持子级,String例行,支持自定义)
"tabHidden": true, //当前路由是否不显示多标签页(默认值:false,不推荐使用)
"target": "_blank", //是否浏览新标签页打开(不适用于分栏布局左侧tab部分)
"activeMenu": "", //高亮指定菜单,要从跟路由的path开始拼接
"dot": false, //小圆点(默认值:false)
"dynamicNewTab": false, //动态传参路由是否新开标签页(默认值:false)
"breadcrumbHidden": true, //面包屑是否显示(默认值:false)
"children": [{...},{...}],
//"affix": true, //当前路由是否固定多标签页(旧版)
//"roles": ["admin", "..."], //旧版本,当config/settings.js中rolesControl配置开启时,用于控制角色(简写)
//"roles": {
//旧版本当config/settings.js中rolesControl配置开启时,用于控制角色(全写)
//"role": ["admin", "..."],
//"ability": ["READ", "WRITE", "DELETE"], //ability: ["READ","WRITE"],
//"mode": "allOf" //allOf: 数组内所有角色都拥有,返回True oneOf: 数组内拥有任一角色,返回True(等价第1种数据) except: 不拥有数组内任一角色,返回True(取反)
//},
//"remixIcon": "", //旧版remix图标
//"isCustomSvgIcon": false, //旧版,是否是自定义svg图标(默认值:false,如果设置true,那么需要把你的svg拷贝到icon/remixIcon下,然后remixIcon字段配置上你的图标名)
},
//"hidden": true, //2021年5月23日前旧版2.0.4版本前的用法:是否显示在菜单中显示隐藏路由(默认值:false)
//"menuHidden": false, //2021年5月23日前旧版2.0.4版本前的用法:是否显示在菜单中显示隐藏一级路由(默认值:false,除分栏布局有效)
//"alwaysShow": true, //2021年5月23日前旧版2.0.4版本前的用法:当只有一级子路由时是否显示父路由是否显示在菜单中显示路由(默认值:false)
}
# history 与 hash
• 注意事项:hash 模式时,src/config/settings.js下的publicPath字段可配置为空"",history 模式时src/config/settings.js下的publicPath字段需要配置为"/项目名/",如果没有项目名,请配置为"/"