2013-07-18 59 views
2

我目前遷移大型骨幹應用到木偶和很好奇,什麼是模塊之間進行調解活動更好的設計的意見。Marionette.js中保(「全球性」命令VS應用程序控制器)

我有有幾個模塊,其中一個模塊中的一個動作可能導致活動其他模塊中發生的應用。

由於這些所有都耦合到I可以簡單地使用Wreqr接口中的應用其中:

模塊1:

someActivity: -> 
    App.vent.trigger("skyFalling") 

模塊2:

initialize: -> 
    App.vent.on("skyFalling", @closeOrSomething) 

第3單元:

initialize: -> 
    App.vent.on("skyFalling", @blinkRapidly) 

或者它會更好,其中應用程序(或綁在應用程序的控制器)偵聽,然後直接在所說的「closeOrSomething」和「blinkRapidly」函數來觸發模塊1的事件模塊(因爲App知道它正在加載的所有模塊)。

應用:

skyFallingEventHandler: -> 
    Module2.closeOrSomething() 
    Module3.blinkRapidly() 
+2

這可能太過分了。這兩種方法都可以發揮作用,而且你很可能會爲此提出強有力的論據。這個問題可能更適合於http://codereview.stackexchange.com/ –

回答

1

我選擇了一個調解的方式與app.vent.trigger()app.vent.on(),不與模塊的方法打結。 這樣你就可以解耦模塊和應用程序。
只需使用Observer + Mediator(通過中介對象的發佈/子事件)。你不需要關心方法名稱和它們的調用。 如果您的模塊/類已更改,並且不需要對某些應用程序的事件作出反應,只需禁用事件處理(訂閱)內部的模塊並且您不需要修改您的內部代碼Application。這樣另一位工程師可以修改模塊,也不需要修改Application

相關問題