# 04. 路由与页面组织(Router & Views) - 路由文件:`src/router/index.ts` - 核心结构: - `constantRoutes`:登录/注册/404 等公共路由 - `asyncRoutes`:业务路由,通常以 `Layout` 为根节点容器 ## Views 目录约定(src/views) 本仓库页面主要集中在: - `src/views/index/`:工作台/仪表盘等示例首页 - `src/views/vab/`:组件/表单/表格等示例页(演示用途居多) - `src/views/other/`:杂项示例页(iframe/excel/drag/nested 等) - `src/views/setting/`:后台管理相关页面(用户/角色/部门/菜单/字典/任务/日志等) - `src/views/tools/`:工具类页面(如 EyeDropper/SpeechSynthesis) - `src/views/login/`、`src/views/register/`、`src/views/callback/`:登录链路 - `src/views/403.vue`、`src/views/404.vue`:错误页 路由对页面的引用方式以动态导入为主:`component: () => import('@/views/...')`。 ## meta 约定(给菜单/面包屑/行为用) 常见 meta 字段(与组件实现强相关): - `meta.title`:菜单/面包屑/页面标题(`VabLanguage` 会用它更新 `document.title`) - `meta.icon` + `meta.isCustomSvg`:菜单与面包屑图标(`VabMenu`/`VabBreadcrumb`) - `meta.hidden`:是否从菜单隐藏(`VabMenu`) - `meta.breadcrumbHidden`:是否从面包屑隐藏(`VabBreadcrumb`) - `meta.noColumn`:Column 布局下的特殊处理(`VabColumnBar` 会折叠菜单并隐藏 fold 按钮) - `meta.target`(如 `_blank`):点击菜单时打开方式(`VabMenuItem`) - `meta.badge` / `meta.dot`:菜单右侧标记(`VabMenuItem`) ## AI 生成新模块页面的最小流程 - 在 `src/views//` 创建页面组件 - 在 `src/router/index.ts`(或其拆分文件)添加路由记录 - 如涉及权限/菜单:同步 `meta`(`title/icon/guard/...`) 建议:新增页面后运行一次 [AI-Coding/Validation.md](AI-Coding/Validation.md) 里的“router ↔ views 对账”脚本,防止路由引用了不存在的 .vue,或新页面忘记挂到路由上。 ## 验收点 - 访问路由能渲染页面 - 菜单与面包屑符合 `meta` 约定 - 刷新后路由仍可恢复