2

我正在使用带有布局管理器和 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插件一个视图,以及另一个视图中的扩展文件上传插件)。看起来 define() 会立即预加载模块。

如何避免在应用程序初始化时加载第二个依赖项并仅在我的视图中加载它?我想我可以将 require() 调用嵌套到 View1 的定义中,但我不确定如果调用是嵌套的,我该如何返回一个值。

4

1 回答 1

0

Any time you module load the view1 module, 'jquery.fileupload-ui' will be loaded. If you only need this module in certain cases when you module load view1, you could have view1 require() in 'jquery.fileupload-ui' only if a certain code path is reached.

You can do this by adding a require(['jquery.fileupload-ui'], function(jqui){...}); in the specific method within view1 where you need the library.

I am not sure if this answers your question, but I think it may.

于 2013-04-19T16:17:34.677 回答