DDD、CQRS、ES与EDA完全实践:基于TypeScript和NestJS的项目指南
项目概述
本项目是采用领域驱动设计(DDD)、六边形架构(Hexagonal)、命令查询职责分离(CQRS)、事件源(Event Sourcing, ES)以及事件驱动架构(EDA),并结合行为驱动开发(BDD)的一个全面工作示例。通过TypeScript和NestJS实现,它不仅展示了如何构建健壮且可维护的软件应用,也为学习高级软件架构概念提供了宝贵的参考。
目录结构及介绍
以下是项目的主要目录结构及其功能简述:
├── backend # 后端服务代码,运用NestJS框架
│ ├── src # 应用核心源码,包含各个服务、适配器等
│ │ ├── adapters # 六边形架构中的外向适配器,如数据库连接、API网关通信等
│ │ ├── domains # 核心业务逻辑,根据DDD分层存放实体和聚合根
│ │ ├── infrastructure # 内向适配器,例如日志记录、持久化适配
│ ├── tests # 单元测试和集成测试文件
│ └── ... # 配置文件、启动脚本等其他辅助文件
├── frontend # 前端React应用程序,包括视图模型(MVVM)
├── docker-compose.yml # Docker Compose配置文件,用于快速启动整个应用环境
├── README.md # 项目简介和快速入门指导
└── ... # 许可证文件、贡献指南等其他文档
每个子目录负责特定部分:后端处理业务逻辑和服务暴露,前端提供用户交互界面,而docker-compose.yml则是微服务部署的关键配置。
启动文件介绍
- 主要启动点:位于
backend/src/main.ts。这是后端服务的入口点,初始化NestJS应用,并加载所有必要的模块。 - 前端启动:前端通常通过npm/yarn命令启动,但在本项目中,通过Docker Compose管理,无需单独操作。
要启动整个项目,主要是利用Docker Compose,具体见下方快速启动步骤。
配置文件介绍
- 全局配置:可能包含在
backend/src/config或直接在.env文件中,用于设置数据库连接字符串、服务端口等基础配置。 - 环境变量:项目依赖于环境变量来区分不同运行环境(开发、生产)。这些变量通常在
.env.example中预定义,实际开发中需复制为.env并调整相应值。 - Docker相关配置:
docker-compose.yml作为关键配置文件,定义了服务容器如何搭建环境,包括网络、 volumes绑定、环境变量等,是启动整套系统的基础。
快速启动指南
- 安装前提:确保Docker和Docker Compose已安装。
- 克隆项目:
git clone https://github.com/bitloops/ddd-hexagonal-cqrs-es-eda.git - 进入项目目录:
cd ddd-hexagonal-cqrs-es-eda - 启动应用: 使用Docker Compose启动所有服务:
docker-compose -p bitloops-todo-app up -d - 访问前端: 打开浏览器至
http://localhost:3000开始体验应用。
通过以上步骤,您将能够运行此复杂架构的示例项目,并深入理解其内部工作原理与组织方式。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



