# 9.2 目录结构详解 :::tip 概述 本节详细介绍前端项目(独立 EleVue 仓库)的目录结构,帮助开发者快速定位代码和理解项目组织方式。 ::: ```text ui/src/ ├── api/ # API 接口层(按业务域分组) │ ├── common/ # 公共接口(登录/菜单/用户信息/城市) │ ├── system/ # 系统管理(用户/角色/菜单/部门/岗位/职级/日志/租户) │ ├── content/ # 内容管理(文章/分类/链接) │ ├── data/ # 数据管理(城市/配置/字典/公告/参数) │ ├── dashboard/ # 仪表盘(控制台/消息) │ ├── file/ # 文件管理(文件模板) │ ├── monitor/ # 监控管理(定时任务) │ ├── region/ # 行政区划 │ ├── setting/ # 设置(个人资料/网站配置) │ └── tool/ # 工具(示例/代码生成器) ├── components/ # 公共组件库(20+ 个) │ ├── Table/ # 数据表格(BasicTable) │ ├── Form/ # 动态表单(BasicForm) │ ├── Modal/ # 弹窗 │ ├── Upload/ # 文件上传(BasicUpload) │ ├── Editor/ # 富文本编辑器 │ ├── Excel/ # Excel 导入导出 │ ├── Cropper/ # 头像裁剪 │ ├── Region/ # 行政区划 │ ├── Password/ # 密码强度 │ ├── Qrcode/ # 二维码 │ └── ... ├── directives/ # 自定义指令 │ └── permission.ts # v-perm / v-perms 权限指令 ├── enums/ # 枚举常量 │ ├── httpEnum.ts # HTTP 枚举 │ └── pageEnum.ts # 页面枚举 ├── hooks/ # 组合式函数 │ ├── core/ event/ setting/ web/ │ └── web/usePermission.ts 等 # 权限、页面、图表等复用逻辑 ├── layout/ # 布局组件(侧边栏/顶栏/内容区) ├── plugins/ # 插件 ├── router/ # 路由配置 │ ├── index.ts # 路由实例 │ ├── base.ts # 静态路由(登录/404) │ ├── generator-routers.ts # 动态路由生成(后端菜单 → 路由) │ └── router-guards.ts # 路由守卫(登录校验/菜单加载) ├── settings/ # 项目配置(标题/主题/布局) ├── store/ # Pinia 状态管理 │ └── modules/ │ ├── user.ts # 用户 Store(Token/用户信息/权限) │ ├── asyncRoute.ts # 动态路由 Store │ ├── tabsView.ts # 标签页 Store │ ├── projectSetting.ts # 项目配置 Store │ ├── designSetting.ts # 主题设计 Store │ ├── lockscreen.ts # 锁屏 Store │ └── ossConfig.ts # 云存储配置 Store ├── styles/ # 全局样式(Tailwind / 主题变量) ├── utils/ # 工具函数 │ ├── http/axios/ # HTTP 请求封装(拦截器) │ └── Storage.ts # 本地存储封装 └── views/ # 页面视图 ├── login/ # 登录页 ├── dashboard/ # 仪表盘 ├── system/ # 系统管理页面 ├── content/ # 内容管理页面 ├── data/ # 数据管理页面 ├── monitor/ # 监控管理页面 ├── file/ # 文件管理页面 ├── setting/ # 设置页面(个人资料等) ├── tool/ # 工具页面(示例/代码生成器) ├── iframe/ # 内嵌 iframe 页面 ├── redirect/ # 重定向页面 └── exception/ # 异常页面(403/404/500) ``` ## 分层调用关系 ```text views/(页面) │ 调用 ▼ api/(接口函数)──→ utils/http/axios(拦截器 + Token + 响应解包)──→ 后端 API │ ▼ store/(全局状态:用户、权限、动态路由、标签页) │ ▼ directives/(v-perm 按权限显隐) + hooks/(复用逻辑) ``` ## 命名规范 | 类型 | 规范 | 示例 | |------|------|------| | API 文件 | 小写业务域名 | `user.ts`、`example.ts` | | 页面目录 | 小写业务域名 | `views/system/user/` | | 组件 | 大驼峰 | `BasicTable`、`BasicUpload` | | Store | 驼峰 + Store 后缀引用 | `useUserStore` | | Hooks | `use` 前缀 | `usePermission`、`usePage` | | 枚举 | 大驼峰 | `HttpEnum`、`PageEnum` | :::tip 页面标准文件 每个业务页面目录由 5 个文件组成(与代码生成器输出一致):`index.vue`(列表)、`edit.vue`(编辑弹窗)、`detail.vue`(详情)、`columns.ts`(表格列)、`querySchemas.ts`(查询条件)——见 [9.12 新增页面开发步骤](/zh/frontend/new-page.html)。 :::