Backbone.js如何实现事件?

时间:2013-01-24 22:01:47

标签: javascript backbone.js

澄清:

我只针对支持createEvent,addEventListener等的现代浏览器....

问题

我的意思是本机,用JavaScript。搜索显示他们没有使用createEvent()

我在documentation寻找答案,但没找到。

我在source here中搜索了createEvent(),但没有点击。

骨干如何从母语角度实现事件?

他们是否使用observer pattern

如果JavaScript已经有可用的自定义事件(通过createEvent()),并且事件监听器也可用(addEventListener()为什么他们不使用内置事件?

2 个答案:

答案 0 :(得分:8)

为什么Backbone不使用本机事件?

除了骨干视图之外,使用本机事件是没有意义的。 Backbone为modelscollectionsand generally

提供事件管理

原生事件(通过createEventaddEventListener)绑定到DOM节点。模型和集合不与DOM节点相关联 - 您必须跳过许多不必要的环节来重用该代码。

Backbone事件是否遵循观察者模式?

不是,不。 Backbone.Events更接近publish-subscribe pattern。对象维护命名事件的事件侦听器列表(通过on),然后该对象在触发事件时通过trigger触发对这些侦听器的调用。

如何实施Backbone事件?

Backbone的核心是每个事件维护一个事件监听器数组(在骨干的旧版本中,它曾经使用链表;这个速度较慢)。每个对象都维护自己的侦听器列表;没有中央登记处。

trigger上,骨干调用所有为该事件注册的侦听器;它还会为特殊的all事件调用任何侦听器。

答案 1 :(得分:1)

Backbone执行like this。这是计算空白和评论的163行代码。

澄清如何

  • 基本的东西,比如正则表达式来分割事件名称,一个简单的绑定侦听器注册表,它是简单的对象文字
  • on|bindoff|unbindtriggeroncelistenTostopListening
  • 的API

至于为什么,它基于作者和贡献者的设计决策,使他们感觉自己适合项目的目标和风格。给定主干模型,集合和视图使用的常用模式,命名空间和多事件绑定是很好的便利。

,他们正在使用观察者模式。所有基于事件的系统都包含观察者模式的实现。事件,发布/发布和观察者在广义上讲是同义词,尽管有些人可能会发现在详细讨论时区分它们很重要。

相关问题