Capabilitys Layer 是一套面向 Angular 应用的架构模式,用于在 src/app/capabilitys 目录下实现功能。其意图是:将每个独立能力作为限界上下文(bounded context)交付,能力之间仅通过事件与工作区上下文(workspace context)进行交互。
用途与结构规则 该模式用于组织 src/app/capabilitys 下的功能实现,明确划分 presentation/application/domain/integration 边界。结构上要求每个能力保持内聚:UI + 应用编排 + 领域模型(如需要)。禁止为业务逻辑创建跨能力导入,能力之间必须通过事件通信。
状态管理 使用 @ngrx/signals store 作为能力状态的唯一来源(source of truth)。通过 computed signals 派生视图状态;避免可变数组/对象,避免使用 .push()。异步副作用通过 rxMethod + tapResponse 运行,并显式选择操作符。
事件驱动交互 在持久化之后发布领域/应用事件(append-before-publish)。在应用层 store/effect 中订阅事件,而不是在展示组件中订阅。
UI 规则 使用独立(standalone)、无 zone(zone-less)组件。模板只绑定 signals,并使用 Angular 控制流(@if、@for、@switch、@defer)。仅使用 Material Design 3 token,不使用硬编码颜色。
数据边界 基础设施返回 Observable/Promise;在进入模板之前转换为 signals。不得将 Firebase/DataConnect DTO 泄漏到 integration/infrastructure 之外。
测试期望 用单元测试覆盖 store 状态转换等关键流程,用 Playwright 覆盖 happy path。使用稳定的选择器(data-testid、roles/labels)。
适用场景与限制 该模式适用于采用 Angular、NgRx Signals 与 Material Design 3 的前端项目,尤其是需要按能力拆分限界上下文、以事件解耦能力间通信的场景。资料未提供具体的安装命令、代码示例、收费方式、平台支持范围或效果数据,这些内容暂未提供。