我正在尝试将 jQuery Mobile 包含在一个使用 RequireJS for AMD 的项目中,但是,我不想将 jQuery Mobile 作为 AMD 模块加载。这背后的想法是,我们将使用 AMD 来处理特定于应用程序的逻辑,但任何外部库依赖项(例如 jQuery)都将通过手动定义脚本标签进入全局范围。
我遇到的问题是在 RequireJS 脚本标记似乎导致 RequireJS 定义匿名模块并产生我不理解的冲突之前为 jQuery Mobile 定义脚本标记。我查看了 jQuery 和 jQuery Mobile 代码,它们被设置为有条件地调用 define()
方法(如果存在)。因为我在 RequireJS 加载之前包含了这些标签,所以它们不应该调用 define()
。我用断点仔细检查了这个,他们确实没有。
当我包含 jQuery Mobile 时,出现以下错误:
Error: Mismatched anonymous define() module: [object Object]
如果 jQuery Mobile 没有调用 define()
,我不明白这是怎么发生的。我在这里做错了什么?这与 jQuery Mobile 的新条件 AMD 支持有关吗?
最佳答案
为了确认,您应该使用内置版本的 jQuery Mobile,并且您应该像这样在 require.js 标记之前包含它——请注意,jquery 作为脚本标记包含在内,因为 jQuery Mobile 依赖于它:
<script src="scripts/jquery.js"></script>
<script src="scripts/jquery.mobile.js"></script>
<script src="scripts/require.js" data-main="scripts/app"></script>
我希望这能奏效。如果您有这样的脚本,则可能会生成您看到的错误:
<script src="scripts/require.js" data-main="scripts/app"></script>
<script src="scripts/jquery.js"></script>
<script src="scripts/jquery.mobile.js"></script>
我认为这更多是 RequireJS 的问题,而不是 jQuery Mobile,这是我想为 RequireJS 1.1 修复的问题。但是第一组脚本标签应该可以工作。
如果没有,了解更多您应用的 JS 模块如何使用 jQuery 和 jQuery Mobile 会很有趣。
关于javascript - 将 jQuery Mobile (1.1.0) 与 AMD (RequireJS) 分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522421/