骨干网.js如何实现事件
How does Backbone.js implement events?
澄清:
我只针对支持createEvent,addEventListener等的现代浏览器。
问题
我的意思是原生的,在JavaScript中。 搜索显示他们没有使用createEvent()
。
我正在文档中寻找答案,但没有找到任何答案。
我在这里的源代码中搜索了createEvent()
,但没有点击。
骨干网如何从母语角度实现事件?
他们是否使用观察者模式?
如果 JavaScript 已经有可用的自定义事件(通过 createEvent()
),并且事件侦听器也可用(addEventListener()
为什么他们不使用内置事件?
为什么 Backbone 不使用本机事件?
将本机事件用于主干视图以外的任何内容都没有意义。 主干网为模型、集合和一般提供事件管理
本机事件(通过createEvent
,addEventListener
)绑定到DOM节点。 模型和集合不与 DOM 节点相关联 - 您必须跳过许多不必要的箍才能重用该代码。
主干事件是否遵循观察者模式?
不是真的,不是。 Backbone.Events
更接近发布-订阅模式。 对象维护命名事件的事件侦听器列表(通过 on
),然后该对象在想要触发事件时通过 trigger
触发对这些侦听器的调用。
如何实施骨干事件?
在其核心,Backbone为每个事件维护一个事件侦听器数组(在旧版本的Backbone中,它曾经使用链表;这更慢)。 每个对象维护自己的侦听器列表;没有中央登记处。
在 trigger
上,主干会调用为该事件注册的所有侦听器;并且还会调用特殊情况all
事件的任何侦听器。
Backbone 就是这样做的。它是 163 行代码,计算空白和注释。
澄清如何
- 基本的东西,如正则表达式拆分事件名称,绑定侦听器的简单注册表,它们是简单的对象文字
on|bind
、off|unbind
、trigger
、once
、listenTo
、stopListening
的 API
至于为什么,它是基于作者和贡献者做出的设计决策,他们认为符合项目的目标和风格。命名空间和多事件绑定是很好的便利,因为主干模型、集合和视图使用的常见模式。
是的,他们正在使用观察者模式。所有基于事件的系统都包含观察者模式的实现。从广义上讲,事件、发布/订阅和观察者是同义词,尽管有些人可能会发现在详细讨论时区分它们很重要。
- 实现延迟的jquery更改事件处理程序
- 通过将文件上载到ASHX处理程序来实现SSE(服务器发送的事件)
- 如何将 fn 去抖动实现到 jQuery keyup 事件中
- 将事件添加到网格的coffeescript实现中
- 试图通过模块模式在DOM元素上实现change()事件
- Javascript从另一个onkeypress事件实现事件onkeypress
- 如何在JavaScript中为任何对象实现事件侦听器
- 在Node.js中实现服务器发送事件的简单方法
- GeoLocation,然后是C#事件-如何实现
- androidphonegap-在单个html页面中导航功能或事件时实现后退按钮
- 在其他事件处理程序之后实现事件处理程序
- 为什么使用 JavaScript 闭包实现回调和事件处理程序附件
- 使用 Javascript Infovis Toolkit 在空间树的节点上实现 onclick 事件
- 在单页应用程序上实现Google Analytics页面视图事件的行为很奇怪
- 使用事件实现主干功能
- 如何在使用经典ASP构建的站点上实现事件跟踪?
- 如何实现事件队列
- 为什么在实现事件时不使用IIFE来保护隐私?
- 不同进程虚拟机的JIT编译器是如何实现事件窥视的
- 骨干网.js如何实现事件