whistle.mock-plugins
Version:
Whistle 插件,用于快速创建 API 模拟数据
184 lines (150 loc) • 6.94 kB
Markdown
# 接口管理组件拆分与优化
## 概述
将原本的 `InterfaceManagement.js` 文件(2100多行)拆分为多个更小、更易维护的组件文件,并优化响应管理UI,简化用户界面。
## 文件结构
```
src/components/interface-management/
├── index.js # 统一导出文件
├── constants.js # 常量定义(选项数组)
├── utils.js # 工具函数
├── ResponseContentEditor.js # 合并的响应内容编辑器(包含管理功能)
├── InterfaceTestModal.js # 接口测试模态框
├── PreviewModal.js # 预览模态框
└── README.md # 说明文档
```
## 组件优化说明
### 1. 响应管理UI优化历程
#### 第一阶段:组件合并
- **合并组件**:将原来的 `ResponseManager` 和 `ResponseEditor` 合并为一个 `ResponseContentEditor` 组件
- **简化界面**:移除响应描述字段和内容统计信息,只保留响应名称设置
- **一体化操作**:响应的添加、删除、切换和内容编辑都在同一个Card组件中完成
#### 第二阶段:交互优化
- **智能下拉框**:将响应选择和名称编辑合并为一个既可选择又可编辑的交互组件
- **双模式切换**:
- **选择模式**:下拉选择器用于切换不同响应,右侧编辑按钮可进入编辑模式
- **编辑模式**:输入框直接编辑响应名称,确认或取消按钮完成操作
- **更简洁的布局**:从三列布局(选择/名称/操作)优化为两列布局(选择编辑/删除)
### 2. 各组件职责
#### constants.js
- `contentTypes`: 内容类型选项
- `proxyTypes`: 代理类型选项
- `statusCodes`: 状态码选项
- `httpMethods`: HTTP方法选项
#### utils.js
- `cleanJsonResponse()`: 清理JSON响应
- `isValidUrl()`: 验证URL格式
- `flushCache()`: 刷新缓存
- `refreshCacheAfterUpdate()`: 更新后刷新缓存
- `isUrlMatchPattern()`: URL匹配检查
- `formatResponseContent()`: 格式化响应内容
- `generateResponseId()`: 生成唯一响应ID
#### ResponseContentEditor.js
**优化后的响应内容编辑器组件**,负责:
- 响应的增删改查操作
- 智能响应选择和名称编辑(双模式交互)
- 响应内容编辑和格式化
- 预览功能集成
Props:
- `form`: 表单实例
- `responses`: 响应数组
- `activeResponseId`: 当前激活的响应ID
- `onPreview`: 预览回调
特色功能:
- **双模式交互界面**:选择模式下可快速切换响应,编辑模式下可直接修改名称
- **一键切换**:点击编辑按钮立即进入编辑模式,支持回车确认和失焦保存
- **优雅的状态管理**:使用useState管理编辑状态,实现流畅的模式切换
#### InterfaceTestModal.js
接口测试模态框组件,负责:
- 接口测试表单
- 测试结果显示
- URL匹配规则说明
- 测试失败错误处理
Props:
- `visible`: 是否显示
- `onCancel`: 取消回调
- `editingInterface`: 当前编辑的接口
#### PreviewModal.js
预览模态框组件,负责:
- 响应内容预览
- 格式化内容显示
Props:
- `visible`: 是否显示
- `onCancel`: 取消回调
- `previewContent`: 预览内容对象
## 主文件变更
新的 `InterfaceManagement.js` 文件:
- 从 2126 行减少到约 800 行
- 导入优化后的 `ResponseContentEditor` 组件
- 简化响应相关的状态管理
- 保持完整的功能性
## 使用方式
```javascript
// 导入优化后的组件
import {
ResponseContentEditor,
InterfaceTestModal,
PreviewModal,
contentTypes,
proxyTypes,
statusCodes,
httpMethods,
refreshCacheAfterUpdate,
formatResponseContent,
generateResponseId
} from '../components/interface-management';
// 使用优化后的响应编辑器
<ResponseContentEditor
form={form}
responses={responses}
activeResponseId={activeResponseId}
onPreview={handlePreview}
/>
```
## 优化效果
### UI简化与交互优化
1. **智能交互**:一个组件同时支持选择和编辑功能,减少界面元素
2. **操作直观**:下拉选择 + 编辑按钮的组合,用户操作更自然
3. **状态清晰**:选择模式和编辑模式有明确的视觉区分
4. **快速操作**:支持回车确认、失焦保存等快捷操作
### 布局优化
- **从3列布局简化为2列**:选择编辑区域(span=20)+ 删除操作(span=4)
- **更好的空间利用**:合并后的组件占据更大空间,操作更便捷
- **视觉统一**:保持与整体设计风格的一致性
### 代码优化
1. **状态管理增强**:新增编辑状态和名称编辑状态管理
2. **交互逻辑清晰**:分离选择、编辑开始、编辑完成、编辑取消等逻辑
3. **事件处理完善**:支持多种编辑完成方式(回车、点击确认、失焦)
### 功能保持
1. **完整功能**:所有原有功能都得到保留和增强
2. **兼容性**:保持与现有数据结构的完全兼容
3. **稳定性**:优化过程中不破坏任何现有功能
## 新的UI布局
优化后的响应模块布局:
```
┌─ 响应内容编辑 ─ [添加响应] [预览] [格式化JSON] ─┐
│ │
│ ┌─ 选择响应 / 编辑名称 ────────────┐ ┌─ 操作 ─┐ │
│ │ 选择模式:[下拉选择器] [编辑按钮] │ │ [删除] │ │
│ │ 编辑模式:[输入框] [确认] [取消] │ │ │ │
│ └─────────────────────────────┘ └──────┘ │
│ │
│ 响应内容: │
│ ┌──────────────────────────────────────────┐ │
│ │ │ │
│ │ JSON内容编辑区域 │ │
│ │ │ │
│ └──────────────────────────────────────────┘ │
└──────────────────────────────────────────────┘
```
## 优势
1. **用户体验**:更智能的交互设计,一个组件完成多种操作
2. **界面简洁**:减少界面元素,视觉更清爽
3. **操作效率**:快速切换选择和编辑模式,提升工作效率
4. **代码质量**:清晰的状态管理和事件处理逻辑
5. **扩展性**:良好的组件设计,便于后续功能扩展
## 兼容性
- 完全兼容原有功能和数据格式
- 保持所有API接口不变
- 用户界面和交互逻辑保持一致
- 构建和打包正常工作
- 向前兼容,新功能不影响现有数据