TL; DR; Poszukuję banalnego przykładu aplikacji node.js DDD.Domain Driven Design w aplikacji Node.js
Cześć,
Zamierzam stworzyć aplikację węzła. Zastanawiam się, że nie mogę znaleźć żadnego przykładu aplikacji z logiką biznesową oddzieloną w domenie.
OK, istnieje kilka przykładów takich jak: https://github.com/adrai/node-cqrs-domain - ale jest to całe CQRS z wdrożeniem w zakresie zaopatrywania w wydarzenia.
Mój pomysł jest, aby to zrobić tak:
//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();
}
ale z drugiej strony nigdy nie widziałem żadnego podobnego rozwiązania (z modelu domeny, model ORM, repozytorium i mappers). Czy ja myślę we właściwy sposób? Być może nie ma powodu, aby oddzielać logikę biznesową w domenie w aplikacjach node.js. Jeśli tak, dlaczego? Jeśli nie, czy możesz przesłać mi przykład wdrożenia DDD lub poprawić mój kod?
[13.01.2017]
Utworzyłem przykładowa aplikacja w maszynopisie. Na razie bez repozytoriów i niewiele usług. Problemy i prośby o ściągnięcie są mile widziane. https://github.com/dawiddominiak/ddd-typescript-bin-packing-problem-solution
Nie ma powodu, dla którego nie można zastosować wzorów taktycznych DDD w JS. Głównym powodem, dla którego jeszcze tego nie widziałeś, jest ten sam powód, dla którego od dawna nie widziałeś wzorców projektowych i eleganckich architektur aplikacji w JS: był to język hakerski, którego nikt nie traktował poważnie. DDD tak naprawdę nie dotarło do świata JS, ale kiedy porównasz go z hype, który ma w .NET, Java, Scala itp. – plalx
Nie zapominaj, że w jego rdzeniu, DDD nie jest zdefiniowany przez jego taktyki, ale jest strategiczny schematy: konteksty ograniczone, wszechobecny język, itp. – plalx
"" Hype to ma w .NET, Java, Scala itp. "hmm, a może te społeczności są bardziej podatne na hype :) nie widzisz też wielu bezsensowności Wzorce OOP w językach innych niż enterprisy, ponieważ są po prostu niepotrzebne –