只有在加载主干视图时才需要依赖项

Require dependency only when backbone view is loaded

本文关键字:依赖 视图 加载      更新时间:2023-09-26

我使用Backbone与布局管理器和RequireJS。

View1依赖于如下所示的2个依赖项。应用程序也有类似的视图名为View2,它只依赖于jquery。fileupload',不像View1,它有两个深度。

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,但我不确定如何,然后我可以返回一个值,如果调用嵌套。

任何时候你模块加载view1模块,'jquery。Fileupload-ui '将被加载。如果你只在某些情况下需要这个模块,当你模块加载view1时,你可以在jquery中有view1 require()。只有在到达某个代码路径时才加载文件。

您可以通过在view1中需要库的特定方法中添加require(['jquery.fileupload-ui'], function(jqui){...});来实现这一点。

我不确定这是否回答了你的问题,但我想它可能。