2012-03-29 58 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