8

我正在研究是否有一种方法可以肯定地检测RequireJS 当前是否正在加载给定的脚本。一般来说,AMD 模块的答案会更好,但我的用例只是 RequireJS。

jQuery 和其他库像这样“检测”它:

if ( typeof define === "function" && define.amd ) {
    define( "jquery", [], function() {
        return jQuery;
    });
}

这在大多数情况下就足够了,但问题是它不检测脚本是否作为 AMD 模块加载,它只检测是否define存在并支持 AMD 规范。

有没有一种方法,无论是使用 RequireJS 还是使用 AMD 模块,脚本都可以(真正地)确定它是否作为模块加载?

4

1 回答 1

4

看看指定的()

parentRequire.specified(moduleName):如果模块已经被请求或正在加载并且应该在某个时候可用,则返回 true。

if (typeof require === "function" && typeof require.specified === "function" && require.specified("jquery")) {
    define("jquery", [], function () {
        return jQuery;
    });
}

现在有问题的是如何获取模块名称,因为它可能因用户设置而异。有一个特殊的模块,但仅当您已经在定义调用中时才有效。我建议您联系Requirejs开发人员 jrburke。

于 2013-08-06T16:44:29.590 回答