16

我真的在为 require.js 和 jquery mobile 苦苦挣扎。我有一个基于松散的文件结构和加载模式

https://github.com/appboil/appboil-requirejs-backbonejs-jquerymobile-phonegap

但它已经过时了,我不得不对 require 2.0 版本进行调整。是否有社区接受的方式将 jquery mobile、backbonejs 和 requirejs 一起使用?我想使用骨干网的路由而不是 jquery 手机。此外,该模板有phonegap,我不关心。

4

4 回答 4

27

这是我使用的 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();
        });
    });

由于我需要 jquery for jqm (jquery mobile),我将全部加载它们,并且由于上面的 shim 代码,依赖项以正确的顺序加载。我实际上并没有将任何 jqm 变量传递给函数调用,它只传递 $ 和 App. 下一个重要部分是 jqm-config 文件:

define(['jquery'], function ($) {
      $(document).on("mobileinit", function () {
          $.mobile.ajaxEnabled = false;
          $.mobile.linkBindingEnabled = false;
          $.mobile.hashListeningEnabled = false;
          $.mobile.pushStateEnabled = false;
      });
});

您可以将 jqm 的所有预初始化代码放在该文件中。毕竟,你应该可以使用 jqm 了!

于 2012-06-08T18:01:29.613 回答
2

您可以查看最近发布的主干js 样板或查看 christophe 的主干目录,其中包含启动基本应用程序所需的所有内容。

编辑

https://github.com/raDiesle/backbone.js-jquerymobile-boilerplate-template

于 2012-06-06T06:22:37.560 回答
2

我刚刚在 jQuery Mobile 文档中添加了一个主干.js、require.js 和 jQuery Mobile 小示例应用程序。让我知道这是否有帮助:

http://demos.jquerymobile.com/1.4.4/backbone-requirejs/backbone-require.html

于 2012-10-27T14:45:04.793 回答
1

如果您使用 r.js、requirejs 优化器,这是一个关于 jquery.mobile 和配置问题的兴趣链接: https ://github.com/jrburke/requirejs/issues/358

于 2013-03-13T21:01:33.410 回答