编程语言
首页 > 编程语言> > javascript – 0.9.9中的Backbone对象现在可以用作中介替换吗?

javascript – 0.9.9中的Backbone对象现在可以用作中介替换吗?

作者:互联网

我一直在阅读Backbone Fundamentals并且一直在计划在新项目中使用中介和外观模式,但是在阅读时我想知道为什么不能仅使用应用程序主路由器对象或任何扩展Backbone的对象.Events作为中介,而不是实现书中概述的订阅和发布方法.

现在Backbone 0.9.9的文档明确提到使用Backbone对象(现在从Backbone.Events扩展)作为全局事件总线,我对此更加好奇.任何人都可以澄清这是否是一个好的选择,如果不是为什么?

解决方法:

我没有看到使用Backbone根对象作为中介的任何问题.将应用程序的主路由器用作事件总线并不一定是个好主意,因为这需要路由器实例可以全局访问应用程序的每个部分.使用Backbone根对象在很大程度上避免了这个陷阱,因为它已经是一个全局单例实例.

如果想要真正寻找不使用Backbone作为调解器的理由,你可以说这样做会将所有发布者和订阅者耦合到Backbone,从而降低消费者代码的可移植性.此外,您将无法控制所公开的界面.在AMD / Module模式中,这意味着您必须将Backbone导入到没有业务访问Backbone根对象的模块.

我不认为这是一个问题,因为你的应用程序很可能完全依赖于Backbone.但是如果你感觉偏执,你可以使用Backbone.Events实现而不暴露全局对象:

//mediator.js
define(['backbone', 'underscore'], function(Backbone, _) {
    return _.extend({}, Backbone.Events);
});

在这种情况下,消费者只依赖于接口,而不是实现,并且可以通过自己实现on,off和trigger方法来更改介体介体的实现细节.

标签:backbone-events,mediator,javascript,backbone-js
来源: https://codeday.me/bug/20190901/1783278.html