签入版本
This commit is contained in:
@@ -1,61 +1,66 @@
|
||||
# 9.2 目录结构详解
|
||||
|
||||
:::tip 概述
|
||||
本节详细介绍前端项目的目录结构,帮助开发者快速定位代码和理解项目组织方式。
|
||||
本页给出 `ui/src` 各目录的职责与放置规则。核心原则:**按业务域分组、按层次隔离**——页面不直连 axios,组件不耦合业务。
|
||||
:::
|
||||
|
||||
## 一级目录职责
|
||||
|
||||
| 目录 | 职责 | 放置规则 |
|
||||
|---|---|---|
|
||||
| api/ | 接口函数 | 按业务域分子目录(system/content/data/monitor/tool...),一模块一文件 |
|
||||
| views/ | 页面 | 按业务域分目录,与 api/ 域名对应 |
|
||||
| components/ | 公共组件 | 任何页面可复用的才进这里 |
|
||||
| store/ | Pinia | 全局状态(用户、路由、标签页、设置);页面局部状态不进 store |
|
||||
| router/ | 路由 | constant 静态 + generator-routers 动态 + guards 守卫 |
|
||||
| directives/ | 指令 | perm / perms / scrollBar / clickOutside |
|
||||
| hooks/ | 组合式函数 | core/event/setting/web 分组 |
|
||||
| enums/ | 枚举 | http/role/permissions/cache/page/breakpoint/avatar |
|
||||
| utils/ | 工具 | http 封装、auth、validate、日期、下载、颜色、DOM... |
|
||||
| layout/ | 布局 | 侧边栏、顶栏、标签页、面包屑组件 |
|
||||
| styles/ | 样式 | 全局样式、主题变量、过渡动画 |
|
||||
| settings/ | 设置 | 应用级默认配置 |
|
||||
| plugins/ | 插件 | element、指令、echarts 等全局注册 |
|
||||
| assets/ | 静态资源 | 图片、svg |
|
||||
|
||||
## views 域划分
|
||||
|
||||
```text
|
||||
ui/src/
|
||||
├── api/ # API 接口层(按业务域分组)
|
||||
│ ├── common/ # 公共接口(登录/菜单/用户信息/城市)
|
||||
│ ├── system/ # 系统管理(用户/角色/菜单/部门/岗位/职级/日志/租户)
|
||||
│ ├── content/ # 内容管理(文章/分类/链接)
|
||||
│ ├── data/ # 数据管理(城市/配置/字典/公告/参数)
|
||||
│ ├── dashboard/ # 仪表盘(控制台/消息)
|
||||
│ ├── file/ # 文件管理(文件模板)
|
||||
│ ├── monitor/ # 监控管理(定时任务)
|
||||
│ ├── region/ # 行政区划
|
||||
│ ├── setting/ # 设置(个人资料/网站配置)
|
||||
│ └── tool/ # 工具(示例/代码生成器)
|
||||
├── components/ # 公共组件库(20+ 个)
|
||||
│ ├── Table/ # 数据表格
|
||||
│ ├── Form/ # 动态表单
|
||||
│ ├── Modal/ # 弹窗
|
||||
│ ├── Upload/ # 文件上传
|
||||
│ ├── Editor/ # 富文本编辑器
|
||||
│ ├── Excel/ # Excel 导入导出
|
||||
│ ├── Cropper/ # 头像裁剪
|
||||
│ ├── Region/ # 行政区划
|
||||
│ ├── Password/ # 密码强度
|
||||
│ ├── Qrcode/ # 二维码
|
||||
│ └── ...
|
||||
├── directives/ # 自定义指令
|
||||
│ └── permission.ts # v-perm / v-perms 权限指令
|
||||
├── enums/ # 枚举常量
|
||||
│ ├── httpEnum.ts # HTTP 枚举
|
||||
│ └── pageEnum.ts # 页面枚举
|
||||
├── hooks/ # 组合式函数
|
||||
├── layout/ # 布局组件
|
||||
├── router/ # 路由配置
|
||||
│ ├── index.ts # 路由实例
|
||||
│ ├── base.ts # 静态路由
|
||||
│ ├── generator-routers.ts # 动态路由生成
|
||||
│ └── router-guards.ts # 路由守卫
|
||||
├── store/ # Pinia 状态管理
|
||||
│ └── modules/
|
||||
│ ├── user.ts # 用户 Store
|
||||
│ ├── asyncRoute.ts # 动态路由 Store
|
||||
│ └── ...
|
||||
├── styles/ # 全局样式
|
||||
├── utils/ # 工具函数
|
||||
│ └── http/ # HTTP 请求封装
|
||||
└── views/ # 页面视图
|
||||
├── login/ # 登录页
|
||||
├── dashboard/ # 仪表盘
|
||||
├── system/ # 系统管理页面
|
||||
├── content/ # 内容管理页面
|
||||
├── data/ # 数据管理页面
|
||||
├── monitor/ # 监控管理页面
|
||||
├── tool/ # 工具页面
|
||||
└── exception/ # 异常页面
|
||||
```
|
||||
views/
|
||||
├── dashboard/ 控制台
|
||||
├── system/ 系统管理(user/role/menu/dept/level/position/tenant/logger)
|
||||
├── content/ 内容管理(article/category/link)
|
||||
├── data/ 数据管理(dict/config/param/notice/city)
|
||||
├── monitor/ 监控(job/online/server/cache)
|
||||
├── file/ 文件(fileTemplate)
|
||||
├── tool/ 工具(example/generator)
|
||||
├── setting/ 设置(configWeb/profile)
|
||||
├── login/ 登录(四种表单)
|
||||
├── exception/ 异常页
|
||||
└── iframe/ redirect/ about/
|
||||
```
|
||||
|
||||
## api 域划分
|
||||
|
||||
```text
|
||||
api/
|
||||
├── system/ user/role/menu/dept/level/position/tenant/dictionary/operLog/loginLog
|
||||
├── content/ article/category/link
|
||||
├── data/ dict/config/param/notice/city
|
||||
├── monitor/ job/onlineUser/serverMonitor/cacheMonitor/dataSource
|
||||
├── tool/ example/generator
|
||||
├── file/ fileTemplate
|
||||
├── setting/ profile/web
|
||||
├── dashboard/ console/message
|
||||
├── common/ index/menu/user/city
|
||||
└── region/ region
|
||||
```
|
||||
|
||||
## 页面内私有组件
|
||||
|
||||
页面专属的子组件放 `views/{域}/{模块}/components/`,不进全局 components——防止公共组件被单业务污染。
|
||||
|
||||
## 相关
|
||||
|
||||
- [4.5 前端分层架构](/zh/architecture/frontend-layer.html)
|
||||
- [9.14 API 模块编写规范](/zh/frontend/api-module.html)
|
||||
|
||||
Reference in New Issue
Block a user