Jak*_*keP 5 javascript design-patterns dto single-page-application breeze
我正在构建我的第一个SPA,而且我已经为我的每个实体构建了DTO,但我发现了微风,看起来它需要将您的更改序列化为最小包以优化更新/添加/等等
我构建DTO的原因是"压平"我的数据并限制我在线上放置了多少数据,但我想知道如果Breeze负责它我是否还需要这个开销.
DTO有理由."扁平化数据" 不是其中之一.也不是"限制我在线上放了多少数据".
Breeze使用对象图做得很好.想象一下,为客户发送100份订单.您不希望在每个订单DTO上重复客户名称.使用Breeze,您可以查询客户订单(使用"展开"),您将获得一份客户副本以及随附的订单.
var query = new breeze.EntityQuery.from('Customers')
.where('Id', 'eq', 42)
.expand('orders');
另一方面,如果您只需要客户名称列表,请使用"投影":
var query = new breeze.EntityQuery.from('Customers') // all customers
.select('id, companyName'); // project into an anonymous 2-property object
使用偶尔的服务器端DTO来构建您无法从客户端轻松创建的内容(例如,客户和当前年度订单总额).
关键是您可以混合DTO,投影和实体查询以满足您的需求.你不必一个人或另一个(在我看来).