在消息模式架构下与事件一起传递的数据

Data to be passed along with an event under Messaging pattern architectire

在每个事件的消息中传递模型或集合数据是个好主意吗?例如

messageBus.on('someEvent',modelData);

然后订阅者收到数据。

或者最好有一种服务(JS 模块),它可以在整个应用程序生命周期中存储和更新 model/collection 上的数据,并且应该在每个 'data:changed' 上引发一个事件场合,当 this.dataa 更新时。

订阅者然后会在每个 'data:changed'

上查找服务 this.data 的变化

第一种方法似乎很方便,因为当我真的不需要服务时,除了模型(BackboneJS)之外不需要创建服务。但是在每个事件上发送数据有什么缺点吗?例如。内存消耗等

这里的关键问题是耦合。尽可能避免依赖。

第二种方法将您的代码与 this.data 变量紧密结合。这是糟糕的风格,使测试代码变得更加困难。

第一种方法更好,因为数据是作为参数接收的。这意味着您可以为数据更改处理程序编写简单的单元测试来验证行为。

如需进一步建议,我建议研究 Facebook React https://facebook.github.io/flux/docs/overview.html 中使用的 Flux 设计模式。它描述了简单的基于消息的单向数据流。