我真的在努力与require.js和jquery手机。我有一个基于松散的文件结构和加载模式
https://github.com/appboil/appboil-requirejs-backbonejs-jquerymobile-phonegap
但它是老的,我不得不对require 2.0版本进行修改。是否有社区接受的方式使用jquery mobile,backbonejs和requirejs在一起?我想使用骨干的路由而不是jquery手机。此外,该模板有电话沟通,我不关心。
解决方法
这是我使用的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','jquery.mobile.asyncfilter' ],App ){ $(function(){ App.initialize(); }); });
由于我需要jquery jquery(jquery mobile),我将加载它们,并感谢上面的垫片代码,依赖关系以正确的顺序加载。我实际上并没有将任何jqm变量传递给函数调用,它只传递$和App。下一个重要的部分是jqm-config文件:
define(['jquery'],function ($) { $(document).on("mobileinit",function () { $.mobile.ajaxEnabled = false; $.mobile.linkBindingEnabled = false; $.mobile.hashListeningEnabled = false; $.mobile.pushStateEnabled = false; }); });