我想在运行时确定是否已经定义了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模块定义会阻止原始模块定义回调运行。