Jquery mobile jquery mobile require.js和主干
我真的在为require.js和jquerymobile苦苦挣扎。我有一个松散的文件结构和基于Jquery mobile jquery mobile require.js和主干,jquery-mobile,backbone.js,requirejs,Jquery Mobile,Backbone.js,Requirejs,我真的在为require.js和jquerymobile苦苦挣扎。我有一个松散的文件结构和基于 但是它太旧了,我不得不为require2.0版本做一些修改。是否有社区认可的方式将jquery mobile、backbonejs和requirejs一起使用?我想使用主干网的路由,而不是jquery手机。此外,该模板还有phonegap,我对此不感兴趣。您可以查看最新发布的或christophe's,其中包含启动basic应用程序所需的所有内容 编辑 这是我使用的main.js文件 require
但是它太旧了,我不得不为require2.0版本做一些修改。是否有社区认可的方式将jquery mobile、backbonejs和requirejs一起使用?我想使用主干网的路由,而不是jquery手机。此外,该模板还有phonegap,我对此不感兴趣。您可以查看最新发布的或christophe's,其中包含启动basic应用程序所需的所有内容 编辑
这是我使用的main.js文件
require.config({
baseUrl: "/js/",
paths: {
jquery: 'libs/jquery/jquery-1.7.1',
'jquery.mobile-config': 'libs/jqm/jquery.mobile-config',
'jquery.mobile': 'libs/jqm/jquery.mobile-1.1.0',
'jquery.mobile.asyncfilter': 'libs/jqm/asyncfilter',
underscore: 'libs/underscore/underscore-1.3.3',
backbone: 'libs/backbone/backbone-0.9.2',
templates: '../templates'
},
shim: {
'underscore': {
exports: "_"
},
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['jquery','underscore'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone'
},
'jquery.mobile-config': ['jquery'],
'jquery.mobile': ['jquery','jquery.mobile-config'],
'jquery.mobile.asyncfilter': ['jquery.mobile'],
}
});
require([
'jquery',
'app',
'jquery.mobile','jquery.mobile.asyncfilter'
], function( $, App ){
$(function(){
App.initialize();
});
});
最后一位对于正确加载JQM(并实际运行)非常重要。本部分:
require([
'jquery',
'app',
'jquery.mobile','jquery.mobile.asyncfilter'
], function( $, App ){
$(function(){
App.initialize();
});
});
由于我需要jqm的jquery(jQueryMobile),我将全部加载它们,多亏了上面的填充代码,依赖项以正确的顺序加载。实际上,我没有将任何jqm变量传递到函数调用中,函数调用只传递$和App。下一个重要部分是jqm配置文件:
define(['jquery'], function ($) {
$(document).on("mobileinit", function () {
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
});
});
您可以将jqm的所有preinit代码都放在该文件中。在所有这些之后,您应该能够使用jqm 我刚刚在jQuery Mobile文档中添加了backbone.js、require.js和jQuery Mobile小示例应用程序。让我知道这是否有帮助:
如果您使用的是r.js、requirejs optimizer,这是一个关于jquery.mobile和config问题的兴趣链接:
尽管一切都是神圣和纯洁的,但我可能已经找到了方法。我将进行测试,如果它真的有效,我将在github上提供一个带有链接的源代码。不幸的是,没有使用jqm的示例。在
主干目录中有一个子文件夹使用jquery mobile OnlyHoops,我的眼睛错过了您答案中的第二个链接。虽然没有使用require.js,但这是一个有趣的示例。您好,谢谢!我能够完成所有工作,包括jqm的preinit代码,但是,我不理解“jquery.mobile.asyncfilter”。有什么提示吗?对不起,这是我为jqm编写的数据过滤器插件。您可以删除它。这就是您初始化其他jqm或jquery插件的方式。嘿,这是一个很大的帮助,谢谢。我得到了以下错误:TypeError:mpc未定义[Break On This error]mpc.trigger(pbcEvent,triggerData)代码>即使在您的更改之后,也会显示,但仅每隔一次显示一次。知道吗?不知道mpc是什么。一个每隔一次的错误?讨厌。可能想提出一个新的SO问题。mpc代表移动页面容器。这是一个应该在mobileinit之后运行的代码,但是由于我使用主干来运行$.mobile.changePage
,mpc.trigger
最终在mobileinit之前运行。一旦我有时间设置一个小样本,我将设置一个新问题。该页面确实对我有所帮助,但现在它将重定向到新的jquery 1.3文档。如果可以再次更新,请将其还原。如果您仍然有问题,请告诉我。我在该示例中没有看到主干,只需要.js。@PeterNore您阅读了整个帖子了吗?另外,下面是示例应用程序的来源:@GregFranko-抱歉,我是RequireJS新手,没有意识到require脚本标记上的data main=“js/mobile”意味着我可以找到js/mobile.js中引用的包含的依赖项。谢谢这解决了我的问题。特别要注意shim文档中的注释:“shim配置仅设置代码关系。要加载属于或使用shim配置的模块,需要正常的require/define调用。设置shim本身不会触发代码加载。”