286 lines
5.7 KiB
Markdown
286 lines
5.7 KiB
Markdown
|
|
# 项目架构文档
|
||
|
|
|
||
|
|
## 系统架构概述
|
||
|
|
|
||
|
|
yudao-ui-admin-vben 采用现代化的前端架构设计,基于 Vue3 + TypeScript + Monorepo 技术栈,提供可扩展、高性能的企业级管理系统解决方案。
|
||
|
|
|
||
|
|
## 整体架构
|
||
|
|
|
||
|
|
### 架构图
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TB
|
||
|
|
A[用户界面] --> B[应用层]
|
||
|
|
B --> C[业务逻辑层]
|
||
|
|
C --> D[数据访问层]
|
||
|
|
D --> E[后端API]
|
||
|
|
|
||
|
|
F[构建工具] --> G[打包优化]
|
||
|
|
G --> H[部署发布]
|
||
|
|
|
||
|
|
I[开发工具] --> J[代码检查]
|
||
|
|
J --> K[测试验证]
|
||
|
|
```
|
||
|
|
|
||
|
|
### 技术栈分层
|
||
|
|
|
||
|
|
| 层级 | 技术栈 | 说明 |
|
||
|
|
|------|--------|------|
|
||
|
|
| 表现层 | Vue3 + TypeScript | 用户界面渲染 |
|
||
|
|
| 应用层 | Vue Router + Pinia | 路由和状态管理 |
|
||
|
|
| 工具层 | Vite + ESLint | 构建和代码检查 |
|
||
|
|
| 基础设施 | Node.js + pnpm | 运行环境和包管理 |
|
||
|
|
|
||
|
|
## Monorepo 架构设计
|
||
|
|
|
||
|
|
### 项目结构
|
||
|
|
|
||
|
|
```
|
||
|
|
yudao-ui-admin-vben/
|
||
|
|
├── apps/ # 应用目录
|
||
|
|
│ ├── web-antd/ # Ant Design 版本应用
|
||
|
|
│ ├── web-ele/ # Element Plus 版本应用
|
||
|
|
│ ├── web-naive/ # Naive UI 版本应用
|
||
|
|
│ └── backend-mock/ # 后端模拟服务
|
||
|
|
├── packages/ # 共享包目录
|
||
|
|
│ ├── @core/ # 核心功能包
|
||
|
|
│ ├── constants/ # 常量定义包
|
||
|
|
│ ├── effects/ # 副作用管理包
|
||
|
|
│ ├── icons/ # 图标库包
|
||
|
|
│ ├── locales/ # 国际化资源包
|
||
|
|
│ ├── stores/ # 状态管理包
|
||
|
|
│ ├── styles/ # 样式文件包
|
||
|
|
│ ├── types/ # 类型定义包
|
||
|
|
│ └── utils/ # 工具函数包
|
||
|
|
├── internal/ # 内部配置目录
|
||
|
|
│ ├── lint-configs/ # 代码规范配置
|
||
|
|
│ ├── tailwind-config/ # Tailwind 配置
|
||
|
|
│ ├── tsconfig/ # TypeScript 配置
|
||
|
|
│ └── vite-config/ # Vite 配置
|
||
|
|
└── scripts/ # 脚本工具目录
|
||
|
|
```
|
||
|
|
|
||
|
|
### 包依赖关系
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph LR
|
||
|
|
A[apps/web-antd] --> B[packages/@core]
|
||
|
|
A --> C[packages/stores]
|
||
|
|
A --> D[packages/utils]
|
||
|
|
|
||
|
|
B --> E[packages/types]
|
||
|
|
C --> E
|
||
|
|
D --> E
|
||
|
|
|
||
|
|
F[apps/web-ele] --> B
|
||
|
|
F --> C
|
||
|
|
F --> D
|
||
|
|
|
||
|
|
G[apps/web-naive] --> B
|
||
|
|
G --> C
|
||
|
|
G --> D
|
||
|
|
```
|
||
|
|
|
||
|
|
## 核心模块设计
|
||
|
|
|
||
|
|
### 1. 应用模块 (apps/)
|
||
|
|
|
||
|
|
#### 功能特性
|
||
|
|
- **多主题支持**: 同一套业务逻辑,不同 UI 表现
|
||
|
|
- **独立部署**: 每个应用可独立构建部署
|
||
|
|
- **共享代码**: 通过 packages 共享公共逻辑
|
||
|
|
|
||
|
|
#### 技术实现
|
||
|
|
- Vue3 Composition API
|
||
|
|
- TypeScript 类型安全
|
||
|
|
- Vite 快速构建
|
||
|
|
- 热重载开发体验
|
||
|
|
|
||
|
|
### 2. 核心包模块 (packages/@core)
|
||
|
|
|
||
|
|
#### 基础功能
|
||
|
|
- 基础组件封装
|
||
|
|
- 工具函数集合
|
||
|
|
- 类型定义扩展
|
||
|
|
- 配置管理
|
||
|
|
|
||
|
|
#### 设计原则
|
||
|
|
- 单一职责原则
|
||
|
|
- 依赖倒置原则
|
||
|
|
- 接口隔离原则
|
||
|
|
- 开闭原则
|
||
|
|
|
||
|
|
### 3. 状态管理模块 (packages/stores)
|
||
|
|
|
||
|
|
#### 状态分类
|
||
|
|
- 用户状态 (用户信息、权限)
|
||
|
|
- 应用状态 (主题、语言、布局)
|
||
|
|
- 业务状态 (页面数据、表单状态)
|
||
|
|
|
||
|
|
#### 技术实现
|
||
|
|
- Pinia 状态管理
|
||
|
|
- 持久化存储
|
||
|
|
- 类型安全的状态访问
|
||
|
|
|
||
|
|
### 4. 工具模块 (packages/utils)
|
||
|
|
|
||
|
|
#### 工具分类
|
||
|
|
- 数据处理工具
|
||
|
|
- 日期时间工具
|
||
|
|
- 表单验证工具
|
||
|
|
- 网络请求工具
|
||
|
|
|
||
|
|
## 数据流设计
|
||
|
|
|
||
|
|
### 单向数据流
|
||
|
|
|
||
|
|
```
|
||
|
|
用户操作 → 组件事件 → Action → Mutation → State → 组件更新
|
||
|
|
```
|
||
|
|
|
||
|
|
### 异步数据流
|
||
|
|
|
||
|
|
```
|
||
|
|
组件挂载 → 发起请求 → 加载状态 → 数据处理 → 更新状态 → 界面渲染
|
||
|
|
```
|
||
|
|
|
||
|
|
## 路由设计
|
||
|
|
|
||
|
|
### 路由结构
|
||
|
|
```
|
||
|
|
/ # 首页
|
||
|
|
/login # 登录页
|
||
|
|
/dashboard # 仪表板
|
||
|
|
/system # 系统管理
|
||
|
|
/system/user # 用户管理
|
||
|
|
/system/role # 角色管理
|
||
|
|
/system/menu # 菜单管理
|
||
|
|
```
|
||
|
|
|
||
|
|
### 路由守卫
|
||
|
|
- 登录状态验证
|
||
|
|
- 权限验证
|
||
|
|
- 路由拦截
|
||
|
|
- 页面标题设置
|
||
|
|
|
||
|
|
## 权限设计
|
||
|
|
|
||
|
|
### RBAC 权限模型
|
||
|
|
- 用户 (User)
|
||
|
|
- 角色 (Role)
|
||
|
|
- 权限 (Permission)
|
||
|
|
- 菜单 (Menu)
|
||
|
|
|
||
|
|
### 权限控制级别
|
||
|
|
- 页面级权限
|
||
|
|
- 按钮级权限
|
||
|
|
- 数据级权限
|
||
|
|
- 功能级权限
|
||
|
|
|
||
|
|
## 构建部署架构
|
||
|
|
|
||
|
|
### 开发环境
|
||
|
|
- Vite 开发服务器
|
||
|
|
- 热重载支持
|
||
|
|
- Source Map 调试
|
||
|
|
|
||
|
|
### 生产环境
|
||
|
|
- Vite 生产构建
|
||
|
|
- 代码分割优化
|
||
|
|
- 资源压缩处理
|
||
|
|
- CDN 部署支持
|
||
|
|
|
||
|
|
### 部署策略
|
||
|
|
- 静态资源部署
|
||
|
|
- 多环境配置
|
||
|
|
- 版本控制
|
||
|
|
- 回滚机制
|
||
|
|
|
||
|
|
## 性能优化策略
|
||
|
|
|
||
|
|
### 构建优化
|
||
|
|
- 代码分割
|
||
|
|
- 树摇优化
|
||
|
|
- 懒加载
|
||
|
|
- 预加载
|
||
|
|
|
||
|
|
### 运行时优化
|
||
|
|
- 虚拟滚动
|
||
|
|
- 防抖节流
|
||
|
|
- 缓存策略
|
||
|
|
- 图片优化
|
||
|
|
|
||
|
|
## 安全架构
|
||
|
|
|
||
|
|
### 前端安全
|
||
|
|
- XSS 防护
|
||
|
|
- CSRF 防护
|
||
|
|
- 数据加密
|
||
|
|
- 输入验证
|
||
|
|
|
||
|
|
### 权限安全
|
||
|
|
- JWT 令牌
|
||
|
|
- 路由守卫
|
||
|
|
- API 权限验证
|
||
|
|
- 数据权限控制
|
||
|
|
|
||
|
|
## 扩展性设计
|
||
|
|
|
||
|
|
### 插件系统
|
||
|
|
- 组件插件化
|
||
|
|
- 功能模块化
|
||
|
|
- 配置可扩展
|
||
|
|
- 主题可定制
|
||
|
|
|
||
|
|
### 微前端支持
|
||
|
|
- 模块联邦
|
||
|
|
- 独立部署
|
||
|
|
- 技术栈无关
|
||
|
|
- 团队协作
|
||
|
|
|
||
|
|
## 监控运维
|
||
|
|
|
||
|
|
### 性能监控
|
||
|
|
- 页面加载时间
|
||
|
|
- 接口响应时间
|
||
|
|
- 错误监控
|
||
|
|
- 用户行为分析
|
||
|
|
|
||
|
|
### 日志系统
|
||
|
|
- 操作日志
|
||
|
|
- 错误日志
|
||
|
|
- 性能日志
|
||
|
|
- 安全日志
|
||
|
|
|
||
|
|
## 技术选型理由
|
||
|
|
|
||
|
|
### Vue3 优势
|
||
|
|
- 更好的性能
|
||
|
|
- 更好的 TypeScript 支持
|
||
|
|
- 更小的包体积
|
||
|
|
- 更好的开发体验
|
||
|
|
|
||
|
|
### Monorepo 优势
|
||
|
|
- 代码共享方便
|
||
|
|
- 版本管理统一
|
||
|
|
- 构建优化明显
|
||
|
|
- 团队协作高效
|
||
|
|
|
||
|
|
### Vite 优势
|
||
|
|
- 极速的冷启动
|
||
|
|
- 快速的热更新
|
||
|
|
- 丰富的插件生态
|
||
|
|
- 优化的生产构建
|
||
|
|
|
||
|
|
## 架构演进规划
|
||
|
|
|
||
|
|
### 短期目标
|
||
|
|
- 完善现有功能
|
||
|
|
- 优化性能体验
|
||
|
|
- 丰富文档体系
|
||
|
|
|
||
|
|
### 长期目标
|
||
|
|
- 微前端架构支持
|
||
|
|
- 低代码平台集成
|
||
|
|
- AI 辅助开发
|
||
|
|
- 云原生部署
|