requirejs如何识别在加载需要js之前加载的模块

时间:2015-10-22 11:02:23

标签: javascript angularjs requirejs

使用require JS Framework的新手。目前我正在编写角度指令,可以在Web应用程序(html)中用作可重用的Web组件。在角度模块和&指令我用require JS定义了依赖项。在html页面中,如果很少有依赖关系表示angular JS,那么Jquery已经被加载了它是否被指令中的require JS框架识别。

指令可以来自不同的JS,是否可以加载甚至只需要JS一次。

任何建议只能实现一次加载JS文件

由于 Santhosh

1 个答案:

答案 0 :(得分:0)

RequireJS除了自身加载之外什么都不知道。如果script元素加载jQuery,然后RequireJS模块需要模块jquery,那么RequireJS将尝试再次加载jQuery。在加载RequireJS之前,它不会测试是否存在加载了script元素的jQuery。

这就是说,可以编写代码来处理这种情况。例如,您为RequireJS提供的配置可以检查是否已定义jQuery

if (typeof jQuery === 'undefined') {
    require.config({
        paths: {
            jquery: ...path/to/a/cdn/or/a/local/copy...
        }
    });
}
else {
    define('jquery', [], function () { return jQuery; });
}

true的{​​{1}}分支适用于尚未加载jQuery的情况。它配置RequireJS来查找它。 if分支定义了一个false模块,它只返回jquery全局,因此RequireJS实际上不会重新加载jQuery。

您应该能够为Angular执行类似的测试。请记住,jQuery可以被多次调用,而RequireJS将组合多次调用中传递的值。