Eventbus/Aggregator for two Requirejs apps
Eventbus/Aggregator for two Requirejs apps
我有两个应用程序(更多可能使用也可能不使用 backbone + requirejs)的应用程序),都是使用 backbone + requirejs 开发的。 我想创建一个事件总线,两个应用程序都可以在其上发布和订阅特定事件。 我考虑了两种选择,这两种选择都有其自身的低效率。 其中包括:
- 使用文档对象,因为这对于页面上的所有应用程序都是通用的,无论框架/体系结构如何,例如:
聚合define([], function () { var eventAgg = document.getElementsByTagName('body')[0], slice = Array.prototype.slice; 函数 _on() { var args = slice.call(arguments); eventAgg.addEventListener(arg[0], arg[1]); } 函数 _trigger() { var args = slice.call(arguments); eventAgg.dispatchEvent(arg[0]); } 返回 { 开: _on, 触发器:_trigger };});在应用程序 1 的某个模块中的某个地方define(['jquery', "下划线", "骨干", "调度", 'someView'], function ($, _, Backbone, Dispatch, SomeView) { ... Dispatch.on('init', function (e) {...};); ...});在应用程序 2 的某个模块中的某个地方...var customEvent = new CustomEvent('init', {'status': 'all data load success '});dispatcher.dispatchEvent(event);...
- 扩展 Backbone.Events 并将事件聚合器注入所有 requirejs 模块(尽管这种方法充其量是挑剔的)。 与上述方法相同,除了我扩展了 Backbone.Events 而不是使用文档对象。
这些方法对于提供全球事件聚合器来说似乎都不"正确",但我无法想出更好的方法。 有什么建议吗?
Backbone 本身就是一个事件总线。这可能是最直接的方法。
Backbone.on('myevent:app1', function(){alert('sup');})
Backbone.trigger('myevent:app1');
相关文章:
- 以可优化的方式使用requirejs加载模板
- RequireJS向模块传递配置总是返回undefined
- PhoneGap/带有RequireJS's的文本插件
- 如何正确地将参数传递给RequireJS回调函数
- 在requirejs中共享实例化对象
- What does requirejs.config() do?
- 将javascript应用程序迁移到使用AMD的提示(例如requirejs)
- 为什么谷歌地图API's方法未从RequireJS中正确调用
- 创建一个可重用的RequireJs库
- angularjs、因果报应和requirejs测试用例错误
- 在RequireJS define函数中如何处理参数
- 如何为requirejs和qunit设置grunt任务
- 将broccoliJS与当前使用requireJS的模块化主干应用程序结合使用,我想完全放弃requireJS
- 使用requireJS的jqGrid-网格加载但不起作用
- requirejs定义:嵌套依赖关系
- Backbone+RequireJS+Mediator模式导致视图逻辑短路和无限循环
- 何时使用Requirejs以及何时使用捆绑的javascript
- 'define' 在 RequireJS 和 Webapp Yo 生成器上未定义错误
- Backbone+RequireJS:使集合持久化
- Eventbus/Aggregator for two Requirejs apps