2012-03-29 123 views
1

我目前正在使用介于所有模块之间的介体,并允许它们相互通信。所有模块都必须通过中介向任何正在收听的内容发送消息。我一直在阅读RequireJS,但是我还没有找到任何文档来说明如何最好地促进模块之间的通信。RequireJS - 跨模块通信

我已经看过信号,但是如果我理解正确的话,如果您通过媒介运行某些信号,那么信号并不真正有用。我只是想知道还有什么我可以尝试。我非常热衷于使用某种回调模式,但没有比中介中的简单查找表更复杂。

这是我发现的信号执行:https://github.com/millermedeiros/js-signals

这里是别的东西,我发现:http://ryanflorence.com/publisher.js/

是否有一个标准化的方法解决这个问题,或者必须将一切依赖驱动?

回答

3

使用集中式事件管理器是一种相当常见且可扩展的方法。从你的问题中很难说出你有什么问题,如果有的话,你使用的是事件模型。典型的是如下(使用发布者):

文件1:

require(['publisher','module1'],function(Publisher,Module1) { 
    var module = new Module1(); 
    Publisher.subscribe('globaleventname', module.handleGlobalEvent, module); 
}); 

文件2:

这里的主要优点是松耦合;而不是知道其他对象的方法的对象,对象可以触发事件并且其他对象知道如何处理该特定应用程序状态。如果处理事件的对象不存在,则不会引发错误。

您对这种方法有什么问题?

3

这里是你可能想尝试的东西: https://github.com/naugtur/overlord.js

它可以做到比普通的发布者或调停多一点。它允许创建一个通用的API来访问任何模块的任何方法。

这是一种无耻的插件,因为它是我自己的工具,但它似乎与问题非常相关。

支持require.js已被添加。

+0

这看起来很酷!我会继续关注github。 – backdesk 2012-05-24 13:50:57