文档目录
glen
· 预计阅读 1 分钟

静态路由、隐藏路由和动态路由

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

静态路由、隐藏路由和动态路由

静态路由

来源有两处:

  • 框架自己的 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 不使用框架布局

评论

加载评论中…

上一篇 路由与菜单 下一篇 后端菜单怎样找到页面组件

BitLabs © 2026 · 论坛讨论 · 博客长文 · 文档手册