如何确定是否已为YUI3模块调用Y.add?

时间:2013-10-09 20:26:56

标签: javascript module yui yui3

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

基于读取YUI代码,看起来像YUI.Env.mods [moduleName]会做的伎俩,但我找不到这个属性的任何文档,所以我不确定它是否意味着使用/适用于所有情况。有没有一种首选的方法呢?

编辑:这是我想要完成的事情:

我们正在从通过HEAD中的链接/脚本标记手动加载大多数资产的系统切换到我们更依赖于YUI加载程序的系统。为了支持遗留代码,我想确保预装在HEAD中的模块不会被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>

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

0 个答案:

没有答案