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