Eventbus / Aggregator用于两个Requirejs应用程序
我有两个应用程序(更多可能会添加,可能会或可能不会使用backbone + requirejs),都是使用backbone + requirejs开发的。 我想创建一个事件总线,在这两个应用程序可以发布和订阅特定事件。 我考虑过两种选择,这两种选择都有其自身的低效率。 这些包括:
// Aggregator
define([], function () {
var eventAgg = document.getElementsByTagName('body')[0],
slice = Array.prototype.slice;
function _on() {
var args = slice.call(arguments);
eventAgg.addEventListener(arg[0], arg[1]);
}
function _trigger() {
var args = slice.call(arguments);
eventAgg.dispatchEvent(arg[0]);
}
return {
on: _on,
trigger: _trigger
};
});
// Somewhere in one of app 1's modules
define(['jquery',
'underscore',
'backbone',
'dispatch',
'someView'], function ($, _, Backbone, Dispatch, SomeView) {
...
Dispatch.on('init', function (e) {...};);
...
});
// Somewhere in one of app 2's modules
...
var customEvent = new CustomEvent('init', {'status': 'All data loaded successfully'});
dispatcher.dispatchEvent(event);
...
这两种方法都不适合提供全球事件聚合器,但我还没有能够提出更好的方案。 有什么建议么?
Backbone本身就是一个事件总线。 这可能是最直接的做法。
Backbone.on('myevent:app1', function(){alert('sup');})
Backbone.trigger('myevent:app1');
链接地址: http://www.djcxy.com/p/70413.html
上一篇: Eventbus/Aggregator for two Requirejs apps
下一篇: Backbone and AMD dependency definitions, parameters vs variables
