Private
Public Access
1
0
Files
u-desk/docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-001-事件系统设计.md
绝尘 a5d30684ed 重构:文件系统模块化架构,增强 Markdown 渲染
- 拆分 FileSystem.vue 为模块化组件架构
- 新增 Markdown Mermaid 图表渲染支持
- 新增 180+ 编程语言代码高亮
- 修复编辑/预览模式切换渲染问题
- 优化亮色/暗色模式主题适配
- 新增 TypeScript 类型定义
2026-02-04 03:32:46 +08:00

1.6 KiB
Raw Blame History

ADR-001: 事件系统设计

状态:已采纳
日期2026-01-28
决策者:开发团队

上下文

需要设计一个统一的事件系统,用于组件间通信。要求:

  1. 类型安全
  2. 易于扩展
  3. 统一的事件命名和参数格式

考虑的选项

选项1使用Vue原生事件系统

  • 优点:简单直接,无需额外实现
  • 缺点:缺乏类型约束,容易出错

选项2自定义事件总线

  • 优点:解耦组件,支持全局事件
  • 缺点:增加复杂度,可能过度设计

选项3TypeScript类型定义 + Vue事件系统

  • 优点:类型安全,保持简单,易于扩展
  • 缺点:需要维护类型定义

决策

选择的方案:选项3 - TypeScript类型定义 + Vue事件系统

理由

  1. 类型安全通过TypeScript类型定义确保事件参数类型正确
  2. 简单直接使用Vue原生事件系统不增加额外复杂度
  3. 易于扩展:新增事件只需在类型定义文件中添加
  4. 统一规范:通过类型定义强制统一事件命名和参数格式

后果

正面影响

  • 类型安全,减少运行时错误
  • 代码提示和自动补全
  • 统一的事件命名和参数格式
  • 易于维护和扩展

负面影响

  • 需要维护类型定义文件
  • 需要TypeScript支持

约束

  • 所有事件参数必须使用对象格式
  • 所有事件必须有TypeScript类型定义
  • 事件名称使用kebab-case格式

相关决策