javascript - 将 jQuery Mobile (1.1.0) 与 AMD (RequireJS) 分开

标签 javascript jquery jquery-mobile requirejs amd

我正在尝试将 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/

相关文章:

javascript - jQuery 选择器 - 样式值

javascript - 如果 javascript 在第三方网站上,如何从 javascript 对 REST API 进行身份验证?

javascript - 如何在 Javascript 中检查输入单词与多个数组

javascript - 选中复选框后不显示 JQuery Mobile Div

javascript - 在 ASP.Net Web API 的情况下从 angularjs http post 响应中检索值

javascript - 如何自动按特定顺序打开 Javascript 动画(带有 CSS)?

jquery - 如何使用 Jquery 移动选择菜单更改页面?

JQuery 主题未正确加载

javascript/php - 缩短字符串以适合特定的行数

javascript - 将嵌套数组减少为格式化字符串