# SOLID 实战

这是一个使用基于 SOLID 实现的 inversify 框架完成的 IoC 的 Node.js 小架构。代码地址 (opens new window)

# 开发流程

  1. 先定义接口

  2. 实现接口 services,标记为可被注入 @injectable()

  3. 起名字,采用 inversify-binding-decorators 这个库的话可以省去这一步的工作

    容器.绑定<interface类>(名字).to(具体哪个类)

    container.bind<Warrior>(TYPES.Warrior).to(Ninja);

  4. 执行注入到需要的类里

# 目录结构

├── README.md 说明文档
├── app.ts 启动文件
├── constant 敞亮定义
├── controllers 路由文件
├── interface 接口
├── ioc 控制中心
├── models 数据模型
├── node_modules 仓库 @types/xxx
├── package.json 包管理
├── services 服务层实现接口层
├── tsconfig.json 配置文件,最好自己一个个往里填
└── yarn.lock 🔐 包锁文件
1
2
3
4
5
6
7
8
9
10
11
12

# 用到的库

# 启动项目

启动命令:ts-node app.ts,需要先安装 typescript 和 ts-node

# InversifyJS 和 Awilix 的区别

  • InversifyJS 是完全遵循 SOLID 原则实现的,但是 Awilix 并没有。

  • InversifyJS 在注入过程中灵活性更高。

# DDD 实战

DDD(领域驱动设计) 实战是在基于 SOLID 实战的基础上进行的。代码地址 (opens new window)

# 关于 DDD 的思想

学习 DDD 可以去看这篇文章:An Introduction to Domain-Driven Design - DDD w/ TypeScript (opens new window)

# DDD 的核心点

  • 软件复杂度的分析

  • 怎么去界定服务的上下文,怎么知道谁通知谁,谁跟谁之间协作

  • 软件分层,这个分层是基于 SOLID 之上的

# 新增的库

上次更新时间: 2021年11月29日 18:29:38