角 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:

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

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

要看到骨架工作端到端,请在您中调用生成的特性组件 app.component.html数字 :
<booking-search></booking-search>
您不需要任何 TypeScript 或 Angular 导入 。 插件已经处理好了 。 运行这个例子后,你应该看到这样的东西:

独立组件
所有发电机都有开关 --standalone 支持独立组件:
nx g @angular-architects/ddd:domain booking --addApp --standalone
nx g @angular-architects/ddd:feature search --domain booking --entity flight --standalone
别把独立组件和传统组件混为一谈.
自第19版以来独立 默认为真。 。 。 .
生成结构
包含的图表为每个域生成一个文件夹. 此文件夹包含特性 lib 以及具有域逻辑的库 :

域层再细分为三部分:

为域库创建的结构
- 应用程序 : 包含应用程序服务。 这是一个DDD术语 对于我们所谓的外观 在现在的Angular。 他们把所有东西都用于给定的用途,这样一个特性组件就只需要与这样一个外表通信. 此外,它还为国家管理隐瞒了细节。 当生成的外观只是使用
BehaviorSubject,可以在下面添加像NGRX这样的图书馆。 由于这样的修改从组件的角度来看没有任何改变,因此可以使用外观来在需求后引入NGRX. - 实体: 客户端数据模型包括在其上操作的逻辑(类似验证).
- 基础设施: 与后端通信的服务.
考虑自动检查访问限制
由于与 Nx 定义的访问限制使用 Linting , 您也可以在命令行中检查它们 。 因此,你可能会考虑把这个 纳入你的自动建设过程.

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