# @ddd-framework/core 中文文档

规范地址：https://npmcn.com/package/%40ddd-framework/core/

版本：1\.0\.13
npm 元数据更新时间：2024-12-22T19:40:11.631Z
中文译文更新时间：2026-11-11T18:01:53.411Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ddd-framework/core
原文对照：https://npmcn.com/package/%40ddd-framework/core/?lang=original
项目主页：https://github.com/rmolinamir/ddd-framework#readme
源码仓库：https://github.com/rmolinamir/ddd-framework

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：130 kB，202 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：reflect-metadata ^0\.1\.13 \|\| ^0\.2\.2
- 首次发布：2022-08-28T23:34:05.879Z
- 最新版本发布：2024-12-22T19:40:11.453Z
- 近 30 天下载量：79014（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：19（近 12 个月 0 个）

## 中文简介

> `@ddd-framework/core` 是一个在综合 `@ddd-framework` 框架。 它为专门为Node.js实施域驱动设计(DDD)提供了基本的功能和类别.

## 安装

```sh
npm install @ddd-framework/core
```

也可以使用：`pnpm add @ddd-framework/core`、`yarn add @ddd-framework/core`、`bun add @ddd-framework/core`

## README

# @ddd-框架/核心

> `@ddd-framework/core` 是一个在综合 `@ddd-framework` 框架。 它为专门为Node.js实施域驱动设计(DDD)提供了基本的功能和类别.

## 导言

这个 `@ddd-framework/core` 软件包是 `@ddd-framework`它提供了一系列特点和工具,对于将DDD原则纳入节点应用至关重要。 这个软件包在精简开发流程,改进代码组织,以及根据DDD原则创建强大而可维护的应用程序等方面发挥了重要作用.

## 文档

更详细的文件类型 `@ddd-framework/core`请参考 [正式文件](https://rmolinamir.github.io/ddd-framework/modules/core.html)。 。 。 .

## 安装

要安装 `@ddd-framework/core`,确保您具备下列先决条件:

-   节点.js 稳定版本
-   [小时](https://pnpm.io/)

一旦设置了先决条件,就运行以下命令:

```shell
$ pnpm i @ddd-framework/core
...
```

这将安装 `@ddd-framework/core` 软件包及其依赖性.

## 特征

这个 `@ddd-framework/core` 软件包提供了一套符合域驱动设计(DDD)原理的功能来方便节点.js应用程序的开发:

-   **总数和实体**: 提供装饰和类,例如: `AggregateRoot` 财务报告和审定财务报表 `Entity` 用于模拟和管理域集合和实体。 这些类囊括了行为,执行业务规则,并使得域模型内部的一致性得以实现.
-   **域事件**: 提供 `DomainEvent` 用于表示和处理域事件的装饰器. 域事件用于捕捉域内有意义的事件并允许应用程序不同部分之间的脱钩通信.
-   **值对象**编号: `ValueObject` 分类以定义不可变值对象。 价值对象用自己的规则和行为来封装小而有凝聚力的数据片段,有助于域模型的完整性和表达性.
-   **域基质**: 提供域原始类, 如 `DateValue` 包含特定域概念,并确保域模型内的类型安全和一致性.
-   **仓库**: 提供 `Repository` 分类,它起到抽象的作用,以域不可知的方式访问并坚持集合和实体. 仓库能够以一致而标准化的方式取回并存储域对象.
-   **工作单位**: 提供 `UnitOfWork` 财务报告和审定财务报表 `UnitOfWorkManager` 执行工作单位模式。 这些类别提供了一种管理交易一致性和协调单一业务内多个总体或实体变化的方法.
-   **例外处理**: 提供一系列例外类别,包括: `ArgumentException`, (中文(简体) ), `InvalidOperationException`,以及更多,处理在域操作中可能出现的特殊情况和出错.

通过利用这些特点,从 `@ddd-framework/core` 软件包,开发者可以在他们的Node.js应用程序中有效实现DDD概念,如聚合,实体,域事件,和寄存器,从而导致更可维护,更能表达,更注重域的代码.

## 使用量

用于 `@ddd-framework/core`,从软件包中导入想要的类、接口或函数。 例如:

```typescript
import {
  AggregateId,
  AggregateRoot,
  Entity,
  EntityId,
  IllegalStateException
} from '@ddd-framework/core';
import { faker } from '@faker-js/faker';

@AggregateRoot()
export class GiftCard extends Entity {
  @AggregateId()
  public id: string;

  public remainingValue: number;

  public transactions: GiftCardTransaction[] = [];

  constructor(id: string, initialBalance: number) {
    super();
    this.id = id;
    this.remainingValue = initialBalance;
  }

  @Entity.Invariant()
  public handle(cmd: TransactCommand | ReimburseCardCommand) {
    if (cmd instanceof TransactCommand) {
      const transaction = new GiftCardTransaction(
        faker.string.uuid(),
        cmd.transactionValue
      );

      this.remainingValue -= transaction.transactionValue;

      this.transactions.push(transaction);

      this.raise(
        new TransactionEvent(
          this.id,
          transaction.transactionId,
          transaction.transactionValue
        )
      );
    } else if (cmd instanceof ReimburseCardCommand) {
      const transaction = this.transactions.find(
        (i) => i.transactionId === cmd.transactionId
      );

      if (transaction) {
        this.remainingValue += transaction.transactionValue;
        transaction.handle(cmd);
      }
    }
  }

  protected validateInvariants(): void {
    if (this.remainingValue < 0)
      throw new IllegalStateException('Gift card cannot be overdrawn');
  }
}
```

## 许可证

`@ddd-framework/core` 以麻省理工学院的许可证发放。 随你随意定制吧 更适合你的需要.

## 常见问题

### @ddd-framework/core 是什么？

@ddd-framework/core 是一个在综合 @ddd-framework 框架。 它为专门为Node\.js实施域驱动设计\(DDD\)提供了基本的功能和类别\.

### 如何安装 @ddd-framework/core？

在项目目录运行 npm install @ddd-framework/core，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：reflect-metadata（^0\.1\.13 \|\| ^0\.2\.2）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @ddd-framework/core 支持 TypeScript 吗？

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

### @ddd-framework/core 支持 ESM 还是 CommonJS？

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

### @ddd-framework/core 可以商用吗？

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

### @ddd-framework/core 的下载量有多少？

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

### @ddd-framework/core 还在维护吗？

最新版本 1\.0\.13 发布于 2024/12/23（1\.9 年前）；至今共发布 19 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/08/29。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

