Javascript 如何确定YUI3模块是否调用了Y.add?

Javascript 如何确定YUI3模块是否调用了Y.add?,javascript,module,yui,yui3,Javascript,Module,Yui,Yui3,我想在运行时确定是否定义了YUI模块(即是否有人为该模块调用了YUI.add() 基于对YUI代码的阅读,看起来YUI.Env.mods[moduleName]会起到作用,但是我找不到任何关于这个属性的文档,所以我不确定它是否在所有情况下都可以使用。有没有更好的方法 编辑:以下是我试图实现的目标: 我们正在从一个通过头部的链接/脚本标签手动加载大多数资产的系统切换到一个更依赖于YUI加载程序的系统。为了支持遗留代码,我希望确保头部预加载的模块不会被YUI再次加载(有些东西,如jQuery,在加载

我想在运行时确定是否定义了YUI模块(即是否有人为该模块调用了YUI.add()

基于对YUI代码的阅读,看起来YUI.Env.mods[moduleName]会起到作用,但是我找不到任何关于这个属性的文档,所以我不确定它是否在所有情况下都可以使用。有没有更好的方法

编辑:以下是我试图实现的目标:

我们正在从一个通过头部的链接/脚本标签手动加载大多数资产的系统切换到一个更依赖于YUI加载程序的系统。为了支持遗留代码,我希望确保头部预加载的模块不会被YUI再次加载(有些东西,如jQuery,在加载两次时会出现问题)

预加载的模块是YUI样式和非YUI样式模块的混合

到目前为止,我发出如下代码:

<head>
<!-- bunch of script/link tags -->
<script>
    var modules = // list of preloaded modules
        , i;
    for (i = 0; i < modules.length; ++i) {
        if (!ISMODULEALREADYDEFINED(modules[i])) {
            YUI.add(modules[i], function (Y) { }, '');
        }
    }
</script>
</head>

var modules=//预加载模块的列表
我
对于(i=0;i

我需要IsModuleReadyDefined检查的原因是,如果一些预加载的模块是YUI样式的模块,那么当我们运行上述脚本时,YUI可能仍在异步加载它们的依赖项。如果发生这种情况,那么我添加的noop模块定义将阻止原始模块定义回调运行。

对象检测在大多数情况下都能正常工作。@dandavis:在这种情况下,我只知道模块名称,而不知道它可能定义的类型/函数。您能更准确地了解您实际要做什么吗?我有点困惑。我不明白你为什么需要这个。例如,YUI从YUI的cdn加载其依赖项,如果加载了模块,则不会再次加载。因此,您需要在js文件中使用YUI.add()定义模块,并通过YUI全局配置加载模块,或者在YUI种子文件之后的html文件中加载模块。如果未调用YUI.add,则不会调用YUI().use()上的回调,应用程序似乎已经死机。如果是为了调试,请加载yui-debug.js而不是yui-min.js,它将被记录。@user32225:您是否建议使用
var-load=false;use(moduleName,函数(Y){loaded=true;})