Files
WXProgram/FRONTEND_DEVELOPMENT_GUIDE.md
2025-10-16 21:32:16 +08:00

232 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 前端开发指南
## 架构设计
本项目采用**桥接模式Bridge Pattern** 来实现数据访问层的抽象,支持:
1. **模拟数据模式** - 使用本地模拟数据进行独立开发和测试
2. **真实API模式** - 连接真实后端服务进行联调测试
## 核心服务
### 1. BridgeService (桥接服务)
位于 `services/bridgeService.ts`,是前端数据访问的统一入口。
**主要功能**:
- 自动路由请求到模拟数据或真实API
- 提供模式切换功能
- 统一的错误处理
- 调试和测试工具
**使用示例**:
```typescript
import bridgeService from '../../services/bridgeService';
// 获取仓库列表
const warehouses = await bridgeService.getWarehouses();
// 切换数据模式
bridgeService.setUseMockData(true); // 切换到模拟模式
bridgeService.setUseMockData(false); // 切换到API模式
```
### 2. ApiService (API服务)
位于 `services/apiService.ts`封装所有后端API调用。
### 3. DataService (数据服务)
位于 `services/dataService.ts`,提供本地模拟数据。
### 4. DeliveryService (货运服务)
位于 `services/deliveryService.ts`,管理货运业务逻辑。
## 开发流程
### 1. 独立开发(模拟模式)
```typescript
// 默认使用模拟数据,无需后端服务
// 所有功能都可以独立测试
```
### 2. 接口联调API模式
```typescript
// 在设置页面切换到API模式
// 或者调用:
bridgeService.setUseMockData(false);
// 现在所有请求都会发送到真实后端
```
### 3. 接口测试
在设置页面提供了丰富的测试工具:
- 测试系统统计接口
- 测试健康检查
- 测试错误日志上传
- 清空缓存
## 后端接口要求
后端需要按照 `API_SPECIFICATION.md` 实现以下接口:
### 认证相关
- `POST /user/login` - 用户登录
- `POST /user/logout` - 用户登出
- `GET /user/info` - 获取用户信息
### 仓库管理
- `GET /warehouses` - 获取仓库列表
- `GET /warehouses/{id}` - 获取仓库详情
- `GET /warehouses/{id}/orders` - 获取仓库订单
### 货运人员
- `GET /delivery-persons` - 获取货运人员列表
- `GET /delivery-persons/{id}` - 获取人员详情
- `PUT /delivery-persons/{id}/location` - 更新位置
- `POST /delivery-persons/locations/batch` - 批量更新位置
- `GET /delivery-persons/{id}/location-history` - 位置历史
### 订单管理
- `GET /orders/pending` - 待指派订单
- `POST /orders/{orderId}/assign` - 指派订单
- `GET /delivery-persons/{id}/orders` - 人员订单
### 统计信息
- `GET /stats/system` - 系统统计
- `GET /stats/orders` - 订单统计
### 系统管理
- `GET /health` - 健康检查
- `POST /logs/error` - 错误日志
## 调试技巧
### 1. 查看当前模式
```typescript
const mode = bridgeService.getCurrentMode(); // 'mock' 或 'api'
const info = bridgeService.getModeInfo();
```
### 2. 手动切换模式
```typescript
// 程序切换
bridgeService.setUseMockData(true);
// 或者在设置页面使用开关
```
### 3. 错误处理
所有接口调用都应该使用 try-catch
```typescript
try {
const data = await bridgeService.someMethod();
} catch (error) {
console.error('API调用失败:', error);
// 可以自动上传错误日志
await bridgeService.uploadErrorLog(error);
}
```
### 4. 性能监控
```typescript
// 在关键接口添加性能监控
const startTime = Date.now();
const result = await bridgeService.getWarehouses();
const duration = Date.now() - startTime;
console.log(`接口耗时: ${duration}ms`);
```
## 最佳实践
### 1. 始终使用 BridgeService
不要直接调用 ApiService 或 DataService始终通过 BridgeService 进行数据访问。
### 2. 处理模式切换
组件应该能够处理数据模式的动态切换。
### 3. 提供降级方案
当API不可用时应该有合理的降级方案。
### 4. 记录使用情况
在关键路径记录模式使用情况,便于分析。
## 测试策略
### 单元测试
- 测试单个组件的功能
- 使用模拟数据确保稳定性
### 集成测试
- 测试组件间的协作
- 可以切换模式进行测试
### 端到端测试
- 使用真实API进行完整流程测试
- 验证前后端集成
## 部署建议
### 开发环境
- 默认使用模拟数据模式
- 便于快速开发和调试
### 测试环境
- 连接到测试服务器
- 使用真实API进行集成测试
### 生产环境
- 始终使用真实API模式
- 确保数据一致性
## 故障排除
### 常见问题
1. **API连接失败**
- 检查网络连接
- 确认后端服务正常运行
- 查看API地址配置
2. **模式切换无效**
- 确认调用了 `setUseMockData()`
- 检查是否有缓存影响
3. **数据不一致**
- 确认当前数据模式
- 检查模拟数据和API响应的格式
### 调试工具
1. **设置页面**
- 查看当前模式状态
- 测试各个接口
- 清空缓存
2. **控制台日志**
- 所有数据访问都有详细日志
- 包含模式信息和耗时
3. **错误监控**
- 自动上传错误日志
- 便于追踪问题
## 扩展开发
### 添加新接口
1.`ApiService` 中添加API方法
2.`BridgeService` 中添加桥接方法
3. 提供模拟数据实现
4. 更新接口文档
### 自定义模拟数据
可以修改 `DataService``DeliveryService` 来定制模拟数据。
### 性能优化
对于频繁调用的接口,可以考虑添加缓存机制。
---
通过这套架构,前端可以:
- ✅ 独立开发,不依赖后端
- ✅ 无缝切换到真实API进行联调
- ✅ 提供完整的测试工具
- ✅ 支持多种环境部署
- ✅ 具备良好的扩展性