静态路由、隐藏路由和动态路由
本文导航

静态路由、隐藏路由和动态路由
静态路由
来源有两处:
- 框架自己的
src/router/modules/*.ts,例如首页、错误页; - 子系统
routes,在applySubsystemRoutes()时加进已经创建的 router。
静态路由在登录前就存在。登录页、404 必须走静态路由,不能等后端菜单。
隐藏路由
不出现在侧栏,用 meta.showLink: false。404、重定向、详情页常用这个。详情页如果希望侧栏仍高亮列表,再加 meta.activePath,值是要高亮的菜单 path。
meta.noLayout: true 的路由不包在根布局里,用来做全屏页。
动态路由
登录成功后 initRouter 调 GET /api/v1/users/me/menus。后端可以返回树,也可以返回带 parentId 的扁平列表。框架先转成树,再把子系统 menuContributions 按父级 name 挂上去,然后 addAsyncRoutes 解析组件。
最后会压成两级:根路由一个,下面一层 children。这是为了多标签和 keep-alive。不要依赖三级以上的前端路由嵌套来做页面缓存。
meta 里和菜单有关的字段
types/router.d.ts 的 CustomizeRouteMeta:
| 字段 | 作用 |
|---|---|
title |
侧栏和标签标题,必填 |
icon |
图标 |
showLink |
是否出现在菜单,默认 true |
showParent |
是否显示父级 |
roles |
页面级角色 |
auths |
给 v-auth / hasAuth 用的按钮编码,不是后端权限标识 |
keepAlive |
是否缓存 |
frameSrc |
有值就用 iframe,不再匹配 Vue 组件 |
hiddenTag |
不进多标签 |
fixedTag |
标签不可关 |
dynamicLevel |
同类动态路由最多开几个 |
activePath |
隐藏页要高亮的菜单 path |
noLayout |
不使用框架布局 |
评论
加载评论中…