【发布时间】:2013-07-31 07:09:23
【问题描述】:
考虑一下:
<script src='global.js'></script>
<script src='require.js'></script>
<script>
require(['modular_foo'], function() {
//do stuff
});
...在 global.js 中,我们有,除其他外:
//global.js
$.getScript("modular_bar.js");
modular_foo 和 modules_bar 都是匿名定义的 AMD 模块。使用 requireJS,加载类似上面的东西会给你我们最喜欢的错误,mismatched anonymous define() modules。
关于为什么会发生这个错误已经足够了(如果你想知道,请阅读那个页面),但问题是,如果你无法摆脱这种情况怎么办?
我正在一个成熟的平台上工作,该平台正在逐渐迁移到 RJS 流程,目前无法同时使用内联遗留脚本(其中一些具有 AMD 检查来触发 define())和我们的 requireJS 条目- 同时指向。
在某些情况下,我可以简单地将内联 AMD 兼容脚本放在加载 require.js 库的上方,但是当您需要根据 DOM 内容异步加载其他内容 (modular_bar.js) 时,这将不起作用。我也可以从外部加载到 RJS 的文件中注释掉所有 AMD 检查,但这会阻止它们与模块化流程中的加载不兼容。
有人有类似的经历吗?你如何混合你的流程来克服这些类型的冲突?
【问题讨论】:
标签: javascript asynchronous module requirejs inline