# 16. Config Key Map（src/config）

> 目的：让 AI 在迁移/新项目开发时，明确“哪些行为由哪些 config key 控制”，并能快速定位 key 的定义与使用点。

## 聚合入口

- `src/config/index.js` 会把 4 份配置聚合导出：
  - `cli.config.js`（构建/CLI 相关）
  - `setting.config.js`（通用/登录/路由/菜单/缓存等）
  - `theme.config.js`（主题与 UI 开关默认值）
  - `net.config.js`（网络请求相关）

注意：`src/config/*` 可能会被 `vue.config.js` 在 Node 环境 `require()` 读取，因此配置文件应避免使用 `window/document`。

## 高影响 keys（按子系统分组）

### 路由/权限/登录

- `authentication`：路由模式（`intelligence` 前端路由 / `all` 后端路由）
- `loginInterception`：是否开启登录拦截（影响 `setupPermissions` 行为）
- `routesWhiteList`：白名单路由（不校验 token）
- `supportVisit`：游客模式
- `rolesControl`：是否按 `roles` 字段进行角色控制
- `isHashRouterMode`：hash/history 模式相关逻辑（菜单里对 `_blank` 打开内部路由有分支）
- `publicPath`：路由/跳转时可能需要的 publicPath

### Token/存储

- `tokenName`：token 字段名
- `tokenTableName`：存储 key 名
- `storage`：`localStorage/sessionStorage/cookie`
- `recordRoute`：token 失效回到登录页时是否记录本次路由

### 页面标题

- `title`：系统标题（影响 `getPageTitle`/浏览器标题/雪花屏标题等）
- `titleSeparator`：标题分隔符
- `titleReverse`：标题是否反转

### 菜单/导航体验

- `uniqueOpened`：是否只保持一个子菜单展开
- `defaultOpeneds`：默认展开菜单 path 列表
- `openFirstMenu`：是否点击一级菜单默认开启二级菜单
- `debounce`：需要加 loading 层防重复提交的请求标识列表
- `keepAliveMaxNum`：keep-alive 最大缓存数量

### Theme 默认值与开关（theme.config.js）

- 默认值：`layout/themeName/background/menuWidth/columnStyle/...`
- UI 开关：`showProgressBar/showTabs/showLanguage/showRefresh/showSearch/showTheme/showNotice/showFullScreen/showThemeSetting/showLock/...`

### 网络请求（net.config.js）

- `baseURL` / `contentType` / `requestTimeout`
- `successCode` / `statusName` / `messageName`

### 构建/CLI（cli.config.js）

- `devPort/outputDir/assetsDir/publicPath`
- `pwa/buildOptimize/noDebugger/lintOnSave`

## 常见使用点（快速定位）

- 路由守卫：`src/router/permissions.ts`（`authentication/loginInterception/routesWhiteList/supportVisit` + `showProgressBar`）
- Router 定义：`src/router/index.ts`（`authentication/isHashRouterMode/publicPath`）
- 菜单：`library/components/VabMenu/components/VabMenuItem.vue`（`isHashRouterMode`）
- 路由 store：`src/store/modules/routes.ts`（`authentication/rolesControl`）
- 标题工具：`src/utils/pageTitle.ts`（`titleSeparator/titleReverse`）
- token 工具：`src/utils/token.ts`（`storage/tokenTableName`）
- request：`src/utils/request.ts`（`baseURL/successCode/statusName/messageName/requestTimeout/contentType` 等）

## 迁移/复用提示（最小闭包）

- 抽 `router`/`request`/`menu` 等模块时，**优先把 `src/config/*` 一并带走**，避免 key 缺失导致行为变化。
- 如果目标项目要改 key 名或改配置来源（例如改成 `.env` 或远端配置），建议先在规格里写清“映射关系”和“验收点”。
