@angular-architects/ddd

中文文档
22.0.0发布于 2026/06/08MITTypeScriptCommonJS近 30 天下载 1.2万

用域驱动设计构建单列波的 Nx 插件

中文使用文档
文档目录13 节
  1. 版本数
  2. 关于
  3. 特征
  4. 特性概览视频
  5. 使用量
  6. 独立组件
  7. 生成结构
  8. 为域库创建的结构
  9. 考虑自动检查访问限制
  10. 演示应用
  11. 资源
  12. 更多架构
  13. 联系作者

角 Nx 单相机的 DDD 插件

版本数

软件包版本与 角质 版本.

  • 页:1 Nx < v19 数据 财务报告和审定财务报表 NG v17 (英语) 使用情况 页:1。 。 。 .
  • 页:1 Nx < v20 数据 财务报告和审定财务报表 NG v18 (英语) 使用情况 页:1。 。 。 .
  • 页:1 Nx >= v20 财务报告和审定财务报表 NG v18 (英语) 使用情况 页:1。 。 。 .
  • 页:1 Nx >= v20 财务报告和审定财务报表 NG v19 (英语) 使用情况 页:1。 。 。 .
  • 页:1 Nx >= v21.2 财务报告和审定财务报表 NG v20 (英语) 使用情况 页:1。 。 。 .
  • 页:1 Nx >= v21.2 (Nx v21-22)和 (中文(简体) ) NG v21 (英语) 使用情况 页:1。 。 。 .
  • 页:1 国 务 院 (Nx v21-23)和 (中文(简体) ) NG v22 (英语) 使用情况 页:1。 。 。 .

打破变革 在v18.1.0中:

地名名称 无 includePaths 已更改为只使用“ /” .

直至 页:1,生成 includePaths 像这样,这是违法的 无数字 :

  "@org/booking/domain": ["libs/booking/domain/src/index.ts"],
  "@org/booking/feature-test": ["libs/booking/feature-test/src/index.ts"]

从开始 页:1,生成 includePaths 正在使用破折号代替 :

  "@org/booking-domain": ["libs/booking/domain/src/index.ts"],
  "@org/booking-feature-test": ["libs/booking/feature-test/src/index.ts"]

关于

这个插件安装了一些图案,根据Nrwl的最佳做法和我们对[客户端 DDD with Angular] (-)的想法,将您的 Nx 工作空间自动切入域和地层 博客:所有关于角和前端架构的 DDD:

domains and layers

生成的访问限制防止了尊重层和域的图书馆之间不想要的访问:

access restrictions

特征

  • QQ 创建域库,包括外观、模型和数据服务
  • QQ 生成特性库, 包括使用外观的特性组件
  • * 增加Nrwl提议的域间访问限制的林入规则
  • 根据 Nrwl(支持tslint 和 eslint) 的建议, 添加层间访问限制的内嵌规则
  • QQ 可选生成 NGRX 的骨架并整合到 DDD 设计中(--ngrx 开关,需要@ngrx/chematics)
  • 支持独立的组件

特性概览视频

Screenshot of Overview Video

使用量

将此插件添加到 Nx 工作空间 :

npm i @angular-architects/ddd
nx g @angular-architects/ddd:init

相反,您也可以使用ng加法,然而,Nx目前使用ng加法时发出警告:

nx add @angular-architects/ddd

手动添加域和特性 :

nx g @angular-architects/ddd:domain booking --addApp
nx g @angular-architects/ddd:domain boarding --addApp
nx g @angular-architects/ddd:feature search --domain booking --entity flight
nx g @angular-architects/ddd:feature cancel --domain booking
nx g @angular-architects/ddd:feature manage --domain boarding

对于 NGRX 支持,只需添加 --ngrx 切换 :

nx g @angular-architects/ddd:domain luggage --addApp --ngrx
nx g @angular-architects/ddd:feature checkin --domain luggage --entity luggage-list --ngrx
[...]

这个例子假设您有应用程序 flight-app 已经就位.

这些图案还连接了个人的解放。 要看到结果,请创建依赖图:

npm run dep-graph

dependency graph

要看到骨架工作端到端,请在您中调用生成的特性组件 app.component.html数字 :

<booking-search></booking-search>

您不需要任何 TypeScript 或 Angular 导入 。 插件已经处理好了 。 运行这个例子后,你应该看到这样的东西:

Result proving that the generated skeleton works end-to-end

独立组件

所有发电机都有开关 --standalone 支持独立组件:

nx g @angular-architects/ddd:domain booking --addApp --standalone

nx g @angular-architects/ddd:feature search --domain booking --entity flight --standalone

别把独立组件和传统组件混为一谈.

自第19版以来独立 默认为真。 。 。 .

生成结构

包含的图表为每个域生成一个文件夹. 此文件夹包含特性 lib 以及具有域逻辑的库 :

Folder per Domain

域层再细分为三部分:

Structured Domain Layer

为域库创建的结构

  • 应用程序 : 包含应用程序服务。 这是一个DDD术语 对于我们所谓的外观 在现在的Angular。 他们把所有东西都用于给定的用途,这样一个特性组件就只需要与这样一个外表通信. 此外,它还为国家管理隐瞒了细节。 当生成的外观只是使用 BehaviorSubject,可以在下面添加像NGRX这样的图书馆。 由于这样的修改从组件的角度来看没有任何改变,因此可以使用外观来在需求后引入NGRX.
  • 实体: 客户端数据模型包括在其上操作的逻辑(类似验证).
  • 基础设施: 与后端通信的服务.

考虑自动检查访问限制

由于与 Nx 定义的访问限制使用 Linting , 您也可以在命令行中检查它们 。 因此,你可能会考虑把这个 纳入你的自动建设过程.

Access restrictions via linting

演示应用

见 https://github.com/angular-architects/ddd-demo (中文(简体) )

资源

更多架构

联系作者

版本与发布记录

@angular-architects/ddd 共发布 54 个版本,首次发布于 2020/03/08;过去 12 个月发布了 2 个版本。

版本发布日期距今
22.0.0latest2026/06/085 个月前
21.0.02026/03/237 个月前
20.0.12025/07/131.3 年前
20.0.02025/06/301.4 年前
19.0.72025/06/301.4 年前
19.0.62025/01/111.8 年前

其他发布通道:v17-lts → 17.0.5,v18-lts → 18.1.1。

关于 @angular-architects/ddd 的常见问题

@angular-architects/ddd 是什么?

用域驱动设计构建单列波的 Nx 插件

如何安装 @angular-architects/ddd?

在项目目录运行 npm install @angular-architects/ddd,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@angular/core(^22.0.0)、@nx/angular(>=21.7.0 <24.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@angular-architects/ddd 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@angular-architects/ddd 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@angular-architects/ddd 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.19.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@angular-architects/ddd 可以商用吗?

@angular-architects/ddd 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@angular-architects/ddd 的下载量有多少?

根据 npm 官方下载统计,@angular-architects/ddd 在 2026/10/06 – 2026/11/04 这 30 天内被下载 12,396 次,日均约 413 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@angular-architects/ddd 还在维护吗?

最新版本 22.0.0 发布于 2026/06/08(5 个月前);至今共发布 54 个版本,其中过去 12 个月发布了 2 个;首次发布于 2020/03/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。