是否可以检测脚本是否作为RequireJS模块加载?

时间:2013-08-06 15:59:18

标签: javascript requirejs amd

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

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

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

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

是否有一种方法,无论是使用RequireJS还是通常使用AMD模块,脚本都可以确定(实际上)它是否作为模块加载?

1 个答案:

答案 0 :(得分:4)

看看specified()

  

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

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

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