仅在加载骨干视图时才需要依赖性

时间:2013-03-13 07:52:52

标签: javascript backbone.js requirejs amd

我正在使用带有布局管理器和RequireJS的Backbone。

View1依赖于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的define中, 但我不知道如果嵌套调用我怎么能返回一个值。

1 个答案:

答案 0 :(得分:0)

每次模块加载view1模块时,都会加载'jquery.fileupload-ui'。如果在模块加载view1时在某些情况下只需要此模块,则只有在达到某个代码路径时才能在'jquery.fileupload-ui'中使用view1 require()。

您可以通过在view1中的特定方法中添加require(['jquery.fileupload-ui'], function(jqui){...});来执行此操作。

我不确定这是否能回答你的问题,但我认为可能会这样。