考虑一下:
<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");
modules_foo 和 modules_bar 都是匿名定义的 AMD 模块。使用 requireJS,加载类似上面的东西会给你我们最喜欢的错误,不匹配的匿名 define() 模块。
关于为什么会发生该错误已经足够好了(如果您想知道,请在该页面上阅读),但问题是,如果您无法摆脱这种情况怎么办?
我正在一个成熟的平台上工作,该平台正在逐渐迁移到 RJS 流程,目前无法同时使用内联遗留脚本(其中一些具有 AMD 检查来触发 define())和我们的 requireJS 入口点.
在某些情况下,我可以简单地将内联 AMD 兼容脚本放在加载 require.js 库的上方,但是当您需要根据 DOM 内容异步加载其他东西(modular_bar.js)时,这不起作用。我也可以从外部加载到 RJS 的文件中注释掉所有 AMD 检查,但这可以防止它们与在模块化流程中加载时不兼容。
有没有人有类似经历的?你如何混合你的流程来克服这些冲突?