requirejs,是否可以创建一个在路径后加载deps的垫片

时间:2014-08-18 11:01:23

标签: javascript requirejs

这是我想要实现的目标。

我有一个主库,需要加载其他几个需要在主库之后加载的库。

所有辅助库都需要加载主库。

有什么类似于垫片的反面吗?

primarylib.js secondarylib1.js secondarylib2.js secondarylib3.js secondarylib4.js secondarylib5.js ....

我想打电话给:

require(['primarylib'], function(){

})

应首先加载primarylib.js,然后加载所有辅助库。

如果我使用普通的shim方法,我需要将每个二级库设置为需要主lib。 当我想调用libs时,我需要调用require()调用中的所有二级库,而不是单个lib,我不惜一切代价避免使用它。


编辑:一些其他评论和背景


我正在尝试实施blueimp的文件上传器。

对于负载图像的依赖性感到哭泣。

load-image文件的最终配置看起来像这样。

        "load-image": {
            "path": "lib\/blueimp-load-image\/load-image"
        },
        "load-image-exif-map": {
            "path": "lib\/blueimp-load-image\/load-image-exif-map",
            "shim": {
                "deps": [
                    "load-image"
                ]
            }
        },
        "load-image-exif": {
            "path": "lib\/blueimp-load-image\/load-image-exif",
            "shim": {
                "deps": [
                    "load-image"
                ]
            }
        },
        "load-image-ios": {
            "path": "lib\/blueimp-load-image\/load-image-ios",
            "shim": {
                "deps": [
                    "load-image"
                ]
            }
        },
        "load-image-meta": {
            "path": "lib\/blueimp-load-image\/load-image-meta",
            "shim": {
                "deps": [
                    "load-image"
                ]
            }
        },
        "load-image-orientation": {
            "path": "lib\/blueimp-load-image\/load-image-orientation",
            "shim": {
                "deps": [
                    "load-image"
                ]
            }
        }
如果这样的事情有效,

会很棒:

        "load-image": {
            "path": "lib\/blueimp-load-image\/load-image",
            "shim": {
                "post-deps": [
                    "lib\/blueimp-load-image\/load-image-exif-map",
                    "lib\/blueimp-load-image\/load-image-exif",
                    "lib\/blueimp-load-image\/load-image-ios",
                    "lib\/blueimp-load-image\/load-image-meta",
                    "lib\/blueimp-load-image\/load-image-orientation"
                ]
            }
        }

了解为完成此任务需要多少额外配置。

为什么不能只需要像post-deps键那样加载后路径依赖项?

我遇到过几个库,导致需要以这种方式加载,不必要地使我的配置文件膨胀。

1 个答案:

答案 0 :(得分:0)

  

当我想调用libs时,我需要调用require()调用中的所有二级库,而不是单个lib,我不惜一切代价避免使用。

  • 确保lib 在依赖模块使用之前
  • 提供对需要工作的特定模块的库
  • 的可见性

如果我正确理解你的问题,你就不喜欢必须做的事情

require(['secondarylib1', 'secondarylib2', 'secondarylib3', ...], function(...) {
    ...
});

每当你想加载所有的libs。假设每个secondarylib需要primarylib,那么避免这种情况的最简单方法是使用&#34; 引导程序&#34; lib为您加载所有依赖库,例如< / p>

<强> Bootstrapper.js

require(['secondarylib1', 'secondarylib2', 'secondarylib3', ...], function() {});

<强> Main.js

require(['bootstrapper'], function() {
    // all libs would be loaded
    ...
});