2013-03-13 84 views
2

我正在使用佈局管理器和RequireJS的Backbone。僅在加載骨幹視圖時才需要依賴關係

視圖1取決於2個依賴關係,如下所示。 該應用程序也有一個名爲View2的類似視圖 ,它僅依賴於'jquery.fileupload',而不像View1,它具有2個Deps。

define(['jquery.fileupload', 'jquery.fileupload-ui'], function (dep1, dep2) { 

    var View1 = Backbone.View.extend({ 

     ... 

    }); 

    return View1; 

}); 

的問題是,「jquery.fileupload-UI」(第二依賴)似乎要裝載/ requireJS評估,即使我不訪問依賴於它的視圖,並導致一些插件錯誤(我在一個視圖中使用基本的fileupload插件,並在另一個視圖中使用擴展的fileupload插件)。它看起來像define()馬上預加載模塊。

如何避免在應用程序初始化時加載第二個依賴項,並只在我的視圖中加載它? 我想我可以將require()調用嵌套到View1, 的定義中,但是我不知道如何在嵌套調用時返回值。

+2

Require.js應該加載視圖,所以如果你在View2的時候沒有創建View1的實例,你應該沒有問題。你最好專注於你得到的插件錯誤,然後解決它 - 也許你可以在這裏發佈它的一部分? – snedkov 2013-03-13 11:39:55

回答

0

任何時候當你模塊加載view1模塊時,'jquery.fileupload-ui'將被加載。如果在模塊加載view1時某些情況下你只需要這個模塊,那麼只有在達到某個代碼路徑時,纔可以在'jquery.fileupload-ui'中使用view1 require()。

您可以通過在需要該庫的view1中的特定方法中添加require(['jquery.fileupload-ui'], function(jqui){...});來實現此目的。

我不確定這是否回答你的問題,但我認爲可能。