TL; DR; 我正在寻找DDD node.js应用程序的一些例子.
嗨,
我要创建节点应用程序.我想知道我找不到任何在域中分离业务逻辑的应用程序示例.
好的,有一些例子:https: //github.com/adrai/node-cqrs-domain - 但这是整个CQRS与事件采购实现.
我的想法是那样做:
//domain/book.js function Book(title, author) { this._title = title; this._author = author; } // domain methods ... //infrastructure/persistance/repository/book-repository.js function BookRepository() {} BookRepository.prototype.save(book) { var bookModel = mappers.mapToOrm(book); return bookModel.save(); } // [...] get, getAll, getNextId //infrastructure/persistance/orm/book.js //using http://bookshelfjs.org/ var Book = bookshelf.Model.extend({ tableName: 'books' }); //infrastructure/mappers/book-mapper.js function mapToOrm(book) { //mapping [...] return new persistance.Book(); } function mapToDomain(domain) { //mapping [...] return new domain.Book(); }
但另一方面,我从未见过任何类似的解决方案(使用域模型,orm模型,存储库和映射器).我是以正确的方式思考的吗?也许没有理由在node.js应用程序中分离域中的业务逻辑.如果是这样,为什么?如果没有,你能给我一个DDD实现的例子或改进我的代码吗?
[2017年1月13日]
我在TypeScript中创建了示例应用程序.目前没有存储库,没有太多服务.欢迎提出问题和拉取请求. https://github.com/dawiddominiak/ddd-typescript-bin-packing-problem-solution
我是Node.js世界的新手。
但是我相信,如果您将TypeScript与Node结合使用,可以强制使用大多数DDD原理。
在node.js中“同时具有优势”的问题没有像我们在C#或Java这样的OOP语言中所具有的限制那样多。JavaScript的这种自由和“混乱” 使得很难创建健壮的复杂DomainModel和业务逻辑