527 lines
10 KiB
Markdown
527 lines
10 KiB
Markdown
# WEB项目技术架构图
|
||
|
||
## 架构概述
|
||
|
||
### 背景意义
|
||
技术架构图用于展示YOONE WEB项目的整体技术结构,包括前端架构层次、数据流向、组件关系和技术栈组成,为开发团队提供清晰的技术视图。
|
||
|
||
### 架构定义
|
||
采用分层架构模式,将系统划分为表现层、业务层、数据层和基础设施层,实现关注点分离和模块化管理。
|
||
|
||
## 整体架构图
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "用户层"
|
||
U1[管理员用户]
|
||
U2[普通用户]
|
||
end
|
||
|
||
subgraph "前端应用层 (React + Umi)"
|
||
subgraph "路由层"
|
||
R1[登录路由]
|
||
R2[业务路由]
|
||
R3[权限路由]
|
||
end
|
||
|
||
subgraph "页面组件层"
|
||
P1[首页 Home]
|
||
P2[用户管理 Organiza]
|
||
P3[商品管理 Product]
|
||
P4[订单管理 Order]
|
||
P5[库存管理 Stock]
|
||
P6[客户管理 Customer]
|
||
P7[物流管理 Logistics]
|
||
P8[数据统计 Statistics]
|
||
end
|
||
|
||
subgraph "业务组件层"
|
||
C1[表格组件 ProTable]
|
||
C2[表单组件 ProForm]
|
||
C3[图表组件 Charts]
|
||
C4[布局组件 Layout]
|
||
end
|
||
|
||
subgraph "工具层"
|
||
T1[API服务 servers/api]
|
||
T2[工具函数 utils]
|
||
T3[常量定义 constants]
|
||
T4[类型定义 typings]
|
||
end
|
||
end
|
||
|
||
subgraph "状态管理层"
|
||
S1[全局状态 @@initialState]
|
||
S2[用户状态 global model]
|
||
S3[权限状态 access]
|
||
end
|
||
|
||
subgraph "网络层"
|
||
N1[HTTP请求拦截器]
|
||
N2[响应处理器]
|
||
N3[错误处理器]
|
||
end
|
||
|
||
subgraph "后端API层"
|
||
A1[用户API /user]
|
||
A2[商品API /product]
|
||
A3[订单API /order]
|
||
A4[库存API /stock]
|
||
A5[物流API /logistics]
|
||
A6[统计API /statistics]
|
||
end
|
||
|
||
U1 --> R1
|
||
U2 --> R1
|
||
R1 --> P1
|
||
R2 --> P2
|
||
R2 --> P3
|
||
R2 --> P4
|
||
R2 --> P5
|
||
R2 --> P6
|
||
R2 --> P7
|
||
R2 --> P8
|
||
R3 --> S3
|
||
|
||
P1 --> C1
|
||
P2 --> C2
|
||
P3 --> C3
|
||
P4 --> C4
|
||
|
||
C1 --> T1
|
||
C2 --> T2
|
||
C3 --> T3
|
||
C4 --> T4
|
||
|
||
T1 --> N1
|
||
N1 --> N2
|
||
N2 --> N3
|
||
|
||
N3 --> A1
|
||
N3 --> A2
|
||
N3 --> A3
|
||
N3 --> A4
|
||
N3 --> A5
|
||
N3 --> A6
|
||
|
||
S1 --> P1
|
||
S2 --> P2
|
||
S3 --> R3
|
||
```
|
||
|
||
## 技术栈架构
|
||
|
||
### 核心技术栈层次图
|
||
|
||
```mermaid
|
||
graph LR
|
||
subgraph "开发工具层"
|
||
D1[TypeScript 5.7]
|
||
D2[ESLint]
|
||
D3[Prettier]
|
||
D4[Husky]
|
||
end
|
||
|
||
subgraph "构建工具层"
|
||
B1[Umi Max 4.4]
|
||
B2[Webpack]
|
||
B3[Babel]
|
||
B4[PostCSS]
|
||
end
|
||
|
||
subgraph "框架层"
|
||
F1[React 18]
|
||
F2[Ant Design 5.4]
|
||
F3[Pro Components 2.4]
|
||
end
|
||
|
||
subgraph "功能库层"
|
||
L1[ECharts 5.6]
|
||
L2[dayjs 1.11]
|
||
L3[file-saver 2.0]
|
||
L4[xlsx 0.18]
|
||
end
|
||
|
||
subgraph "运行时层"
|
||
R1[浏览器环境]
|
||
R2[Node.js环境]
|
||
end
|
||
|
||
D1 --> B1
|
||
D2 --> B1
|
||
D3 --> B1
|
||
D4 --> B1
|
||
|
||
B1 --> F1
|
||
B2 --> F1
|
||
B3 --> F1
|
||
B4 --> F1
|
||
|
||
F1 --> L1
|
||
F2 --> L1
|
||
F3 --> L1
|
||
|
||
L1 --> R1
|
||
L2 --> R1
|
||
L3 --> R1
|
||
L4 --> R1
|
||
```
|
||
|
||
## 数据流架构
|
||
|
||
### 数据流向图
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant U as 用户界面
|
||
participant C as 组件层
|
||
participant S as 状态管理
|
||
participant A as API层
|
||
participant B as 后端服务
|
||
|
||
U->>C: 用户操作
|
||
C->>S: 更新状态
|
||
S->>A: 发起请求
|
||
A->>B: HTTP请求
|
||
B-->>A: 响应数据
|
||
A-->>S: 处理响应
|
||
S-->>C: 状态更新
|
||
C-->>U: 界面更新
|
||
```
|
||
|
||
### 权限控制流程
|
||
|
||
```mermaid
|
||
graph TD
|
||
A[用户登录] --> B{Token验证}
|
||
B -->|有效| C[获取用户信息]
|
||
B -->|无效| D[跳转登录页]
|
||
C --> E[解析用户权限]
|
||
E --> F{路由权限检查}
|
||
F -->|有权限| G[渲染页面]
|
||
F -->|无权限| H[显示403页面]
|
||
G --> I[页面级权限控制]
|
||
I --> J[功能按钮权限]
|
||
```
|
||
|
||
## 组件架构设计
|
||
|
||
### 组件层次结构
|
||
|
||
| 层级 | 组件类型 | 职责描述 | 示例组件 |
|
||
|------|---------|---------|---------|
|
||
| 1 | 页面组件 | 业务页面容器,路由对应 | Home、Order/List |
|
||
| 2 | 业务组件 | 特定业务逻辑封装 | OrderTable、ProductForm |
|
||
| 3 | 通用组件 | 可复用UI组件 | InternationalPhoneInput |
|
||
| 4 | 基础组件 | Ant Design组件 | Table、Form、Button |
|
||
|
||
### 组件通信模式
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "父子组件通信"
|
||
P1[父组件] -->|Props| C1[子组件]
|
||
C1 -->|Events| P1
|
||
end
|
||
|
||
subgraph "跨组件通信"
|
||
G1[全局状态] --> C2[组件A]
|
||
G1 --> C3[组件B]
|
||
C2 --> G1
|
||
C3 --> G1
|
||
end
|
||
|
||
subgraph "兄弟组件通信"
|
||
S1[共同父组件] --> B1[兄弟组件1]
|
||
S1 --> B2[兄弟组件2]
|
||
B1 -.->|通过父组件| B2
|
||
end
|
||
```
|
||
|
||
## API架构设计
|
||
|
||
### API接口分层
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "API接口层"
|
||
A1[用户接口 user.ts]
|
||
A2[订单接口 order.ts]
|
||
A3[商品接口 product.ts]
|
||
A4[库存接口 stock.ts]
|
||
A5[物流接口 logistics.ts]
|
||
A6[统计接口 statistics.ts]
|
||
end
|
||
|
||
subgraph "请求处理层"
|
||
R1[请求拦截器]
|
||
R2[响应拦截器]
|
||
R3[错误处理器]
|
||
end
|
||
|
||
subgraph "数据传输层"
|
||
D1[HTTP Client]
|
||
D2[请求配置]
|
||
D3[类型定义]
|
||
end
|
||
|
||
A1 --> R1
|
||
A2 --> R1
|
||
A3 --> R1
|
||
A4 --> R1
|
||
A5 --> R1
|
||
A6 --> R1
|
||
|
||
R1 --> R2
|
||
R2 --> R3
|
||
|
||
R3 --> D1
|
||
D1 --> D2
|
||
D2 --> D3
|
||
```
|
||
|
||
### API调用流程
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant C as 组件
|
||
participant API as API函数
|
||
participant I as 拦截器
|
||
participant H as HTTP客户端
|
||
participant S as 后端服务
|
||
|
||
C->>API: 调用API函数
|
||
API->>I: 请求拦截
|
||
I->>I: 添加Token
|
||
I->>H: 发送请求
|
||
H->>S: HTTP请求
|
||
S-->>H: 响应数据
|
||
H-->>I: 响应拦截
|
||
I-->>I: 错误处理
|
||
I-->>API: 返回结果
|
||
API-->>C: 返回数据
|
||
```
|
||
|
||
## 构建部署架构
|
||
|
||
### 构建流程图
|
||
|
||
```mermaid
|
||
graph LR
|
||
subgraph "开发环境"
|
||
D1[源代码]
|
||
D2[TypeScript编译]
|
||
D3[热重载]
|
||
end
|
||
|
||
subgraph "构建流程"
|
||
B1[代码检查]
|
||
B2[类型检查]
|
||
B3[打包构建]
|
||
B4[资源优化]
|
||
end
|
||
|
||
subgraph "部署环境"
|
||
P1[静态资源]
|
||
P2[CDN分发]
|
||
P3[Web服务器]
|
||
end
|
||
|
||
D1 --> D2
|
||
D2 --> D3
|
||
D3 --> B1
|
||
B1 --> B2
|
||
B2 --> B3
|
||
B3 --> B4
|
||
B4 --> P1
|
||
P1 --> P2
|
||
P2 --> P3
|
||
```
|
||
|
||
### 环境配置对比
|
||
|
||
| 环境 | 构建模式 | API地址 | 特性 |
|
||
|------|---------|---------|------|
|
||
| 开发环境 | development | http://localhost:7001 | 热重载、Source Map |
|
||
| 生产环境 | production | https://api.yoone.ca | 代码压缩、资源优化 |
|
||
|
||
## 性能优化架构
|
||
|
||
### 性能优化策略
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "加载优化"
|
||
L1[代码分割]
|
||
L2[懒加载]
|
||
L3[预加载]
|
||
end
|
||
|
||
subgraph "渲染优化"
|
||
R1[虚拟滚动]
|
||
R2[组件缓存]
|
||
R3[防抖节流]
|
||
end
|
||
|
||
subgraph "资源优化"
|
||
A1[图片压缩]
|
||
A2[资源合并]
|
||
A3[CDN加速]
|
||
end
|
||
|
||
subgraph "缓存策略"
|
||
C1[浏览器缓存]
|
||
C2[HTTP缓存]
|
||
C3[应用缓存]
|
||
end
|
||
|
||
L1 --> R1
|
||
L2 --> R2
|
||
L3 --> R3
|
||
|
||
R1 --> A1
|
||
R2 --> A2
|
||
R3 --> A3
|
||
|
||
A1 --> C1
|
||
A2 --> C2
|
||
A3 --> C3
|
||
```
|
||
|
||
## 安全架构设计
|
||
|
||
### 安全防护层次
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "认证授权层"
|
||
S1[JWT Token认证]
|
||
S2[权限验证]
|
||
S3[设备指纹识别]
|
||
end
|
||
|
||
subgraph "数据安全层"
|
||
D1[HTTPS传输]
|
||
D2[数据加密]
|
||
D3[敏感信息脱敏]
|
||
end
|
||
|
||
subgraph "应用安全层"
|
||
A1[XSS防护]
|
||
A2[CSRF防护]
|
||
A3[输入验证]
|
||
end
|
||
|
||
S1 --> D1
|
||
S2 --> D2
|
||
S3 --> D3
|
||
|
||
D1 --> A1
|
||
D2 --> A2
|
||
D3 --> A3
|
||
```
|
||
|
||
## 监控架构设计
|
||
|
||
### 监控体系结构
|
||
|
||
```mermaid
|
||
graph LR
|
||
subgraph "前端监控"
|
||
F1[性能监控]
|
||
F2[错误监控]
|
||
F3[用户行为]
|
||
end
|
||
|
||
subgraph "数据收集"
|
||
C1[埋点数据]
|
||
C2[日志收集]
|
||
C3[性能指标]
|
||
end
|
||
|
||
subgraph "数据分析"
|
||
A1[实时分析]
|
||
A2[报表生成]
|
||
A3[告警通知]
|
||
end
|
||
|
||
F1 --> C1
|
||
F2 --> C2
|
||
F3 --> C3
|
||
|
||
C1 --> A1
|
||
C2 --> A2
|
||
C3 --> A3
|
||
```
|
||
|
||
## 架构演进规划
|
||
|
||
### 短期优化(1-3个月)
|
||
|
||
1. **组件库建设**
|
||
- 提取公共业务组件
|
||
- 建立组件文档系统
|
||
- 实现组件单元测试
|
||
|
||
2. **性能优化**
|
||
- 实现路由级代码分割
|
||
- 添加组件懒加载
|
||
- 优化打包体积
|
||
|
||
### 中期升级(3-6个月)
|
||
|
||
1. **状态管理升级**
|
||
- 引入Redux Toolkit
|
||
- 实现状态持久化
|
||
- 优化数据流管理
|
||
|
||
2. **工程化完善**
|
||
- 建立自动化测试
|
||
- 完善CI/CD流程
|
||
- 添加代码质量检查
|
||
|
||
### 长期规划(6个月以上)
|
||
|
||
1. **微前端架构**
|
||
- 模块联邦改造
|
||
- 独立部署能力
|
||
- 团队协作优化
|
||
|
||
2. **技术栈升级**
|
||
- React 19升级
|
||
- 新特性应用
|
||
- 性能进一步优化
|
||
|
||
## 架构最佳实践
|
||
|
||
### 设计原则
|
||
|
||
| 原则 | 描述 | 实现方式 |
|
||
|------|------|---------|
|
||
| 单一职责 | 每个组件只负责一个功能 | 组件功能拆分 |
|
||
| 开闭原则 | 对扩展开放,对修改关闭 | 插件化设计 |
|
||
| 依赖倒置 | 依赖抽象而非具体实现 | 接口定义 |
|
||
| 关注点分离 | 不同关注点分层处理 | 分层架构 |
|
||
|
||
### 代码组织规范
|
||
|
||
```typescript
|
||
// 推荐的文件组织结构
|
||
src/
|
||
├── components/ // 公共组件
|
||
│ ├── Business/ // 业务组件
|
||
│ └── Common/ // 通用组件
|
||
├── pages/ // 页面组件
|
||
│ └── [Module]/ // 按模块组织
|
||
├── services/ // API服务
|
||
├── utils/ // 工具函数
|
||
├── hooks/ // 自定义Hook
|
||
├── constants/ // 常量定义
|
||
└── types/ // 类型定义
|
||
```
|
||
|
||
---
|
||
|
||
*文档版本: v1.0*
|
||
*更新时间: 2024年12月*
|
||
*维护团队: 前端开发组* |