我正在研究是否有一种方法可以检测肯定,当前是否正在由RequireJS加载给定的脚本。一般来说AMD模块的答案会更好,但我的用例只是RequireJS。
jQuery和其他库“检测”它是这样的:
if ( typeof define === "function" && define.amd ) {
define( "jquery", [], function() {
return jQuery;
});
}
在大多数情况下这已足够,但问题是它不会检测脚本是否作为AMD模块加载,它只检测define
是否存在并支持AMD规范。
是否有一种方法,无论是使用RequireJS还是通常使用AMD模块,脚本都可以确定(实际上)它是否作为模块加载?
答案 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开发人员。