重构:文件系统模块化架构,优化应用启动流程
This commit is contained in:
59
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-001-事件系统设计.md
Normal file
59
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-001-事件系统设计.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# ADR-001: 事件系统设计
|
||||
|
||||
**状态**:已采纳
|
||||
**日期**:2025-01-28
|
||||
**决策者**:开发团队
|
||||
|
||||
## 上下文
|
||||
|
||||
需要设计一个统一的事件系统,用于组件间通信。要求:
|
||||
1. 类型安全
|
||||
2. 易于扩展
|
||||
3. 统一的事件命名和参数格式
|
||||
|
||||
## 考虑的选项
|
||||
|
||||
### 选项1:使用Vue原生事件系统
|
||||
- 优点:简单直接,无需额外实现
|
||||
- 缺点:缺乏类型约束,容易出错
|
||||
|
||||
### 选项2:自定义事件总线
|
||||
- 优点:解耦组件,支持全局事件
|
||||
- 缺点:增加复杂度,可能过度设计
|
||||
|
||||
### 选项3:TypeScript类型定义 + Vue事件系统
|
||||
- 优点:类型安全,保持简单,易于扩展
|
||||
- 缺点:需要维护类型定义
|
||||
|
||||
## 决策
|
||||
|
||||
选择的方案:**选项3 - TypeScript类型定义 + Vue事件系统**
|
||||
|
||||
## 理由
|
||||
|
||||
1. **类型安全**:通过TypeScript类型定义确保事件参数类型正确
|
||||
2. **简单直接**:使用Vue原生事件系统,不增加额外复杂度
|
||||
3. **易于扩展**:新增事件只需在类型定义文件中添加
|
||||
4. **统一规范**:通过类型定义强制统一事件命名和参数格式
|
||||
|
||||
## 后果
|
||||
|
||||
### 正面影响
|
||||
- 类型安全,减少运行时错误
|
||||
- 代码提示和自动补全
|
||||
- 统一的事件命名和参数格式
|
||||
- 易于维护和扩展
|
||||
|
||||
### 负面影响
|
||||
- 需要维护类型定义文件
|
||||
- 需要TypeScript支持
|
||||
|
||||
### 约束
|
||||
- 所有事件参数必须使用对象格式
|
||||
- 所有事件必须有TypeScript类型定义
|
||||
- 事件名称使用kebab-case格式
|
||||
|
||||
## 相关决策
|
||||
|
||||
- [知识库/规范/架构规范.md](../知识库/规范/架构规范.md) - 事件系统规范
|
||||
|
||||
Reference in New Issue
Block a user