gar*_*mur 3 javascript mediator backbone.js backbone-events
我一直在阅读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);
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,消费者只能走依赖的接口,而不是实现,并且可以简单地通过实现改变调停员的实施细则on,off和trigger方法自己.
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |