项目介绍
midway_ddd_learn_shopping项目是个人学习搭建的一个TypeScript项目,项目框架选择使用阿里的Midway,使用的数据库是MongoDB,使用的ORM框架是mongoose,采用的架构设计:DDD(领域驱动设计)+CQRS(查询命令职责分离)+EDA(事件驱动设计),后面还会考虑是否加入ES(事件溯源)
为什么选择Midway
Midwayjs是一个用TypeScript开发的Nodejs框架,如果不出意外,应该是后面几年比较主流的Nodejs框架之一。相比较另一个Nodejs框架—Nestjs,Midwayjs可能不太成熟,但框架作者是来自淘宝架构团队,都是国人,在交流上会比较方便,有什么问题可以直接到Midway的github上面直接提issue,很快就能得到回复。
而且从技术选择方面来讲, Midway.js —-|> Egg.js —-|> Koa.js比Nest.js —-|> Express.js,Koa是Express原班人马打造的,肯定是有它的优越性,而且学习坡度也不会太高。
为什么不使用Typeorm,而使用Mongoose
原因是Typeorm对MongoDB的支持不太友好,很多地方要自己手写代码,也不支持事务。而Mongoose提供了一些比较方便快捷的方法提供开发者进行数据模型建立、关联查询、事务处理等。如果是选择使用mysql这样的关系型数据库,则可以考虑使用Typeorm。
