SuperAPI AI 工具集

clean-architecture

编程与开发

查看项目

更新于 10-16 00:05

技能介绍

用途:该技能用于指导开发者按 Clean Architecture 原则构建模块化单体(Modular Monolith)后端,核心是按限界上下文(bounded context)做垂直切分,而非共享扁平的 domain/application/infrastructure 层。

主要能力:

  1. 上下文隔离:每个上下文(如 auth、tax)拥有完整的 domain、application、infrastructure 三层,互不共享层。
  2. 极简共享内核:shared/ 仅允许放 uuidv7.value-object.ts、timestamp.value-object.ts 及 DI 容器、HTTP 服务器、数据库客户端等基础设施,且要求被所有上下文使用、完全一致、永不需要上下文变体,文件数少于 5 个。
  3. 以重复代替耦合:各上下文可各自实现 Money、TaxAmount、Revenue 等值对象,避免共享抽象造成耦合;禁止创建 BaseEntity 等基类。
  4. 上下文通信:只能通过应用服务调用,禁止直接导入其他上下文的领域实体。
  5. 依赖规则:依赖指向内层,领域层无依赖,应用层仅依赖领域,基础设施层依赖应用与领域。
  6. 分层职责:领域层含实体、值对象、端口(无 I 前缀)、领域事件、领域服务与异常;应用层含用例、DTO、映射器;基础设施层含仓储实现、适配器、控制器、Zod 校验、Hono HTTP 层、Drizzle 数据库与 DI 容器。
  7. UUIDv7:推荐作为实体标识,使用 Bun.randomUUIDv7()(Bun 1.3+),具备时间有序、利于 B-tree 索引等特性。

使用方式:在编写后端代码、新建模块或限界上下文、决定文件归属、设计用例、创建实体与值对象、防止共享内核膨胀、实现上下文通信时启用。

适用场景:采用 TypeScript/JavaScript、Bun、Hono、Drizzle ORM 的模块化单体后端项目。

限制:资料未提供安装命令、收费信息、具体版本要求或完整代码示例;实体、值对象、仓储的完整实现需参考 backend-engineer 技能。