jquery mobile require.js和backbone

Sne*_*bat 16 jquery-mobile requirejs backbone.js

我真的在使用require.js和jquery mobile.我有一个基于松散的文件结构和基于的加载模式

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

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

Sne*_*bat 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();
    });
});
Run Code Online (Sandbox Code Playgroud)

最后一点对于让JQM正确加载(实际上是函数)非常重要.这部分:

require([
      'jquery',
      'app',
      'jquery.mobile','jquery.mobile.asyncfilter'
    ], function( $, App ){
        $(function(){
          App.initialize();
        });
    });
Run Code Online (Sandbox Code Playgroud)

由于我需要jquery用于jqm(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;
      });
});
Run Code Online (Sandbox Code Playgroud)

您可以将jqm的所有preinit代码放在该文件中.毕竟,你应该能够使用jqm!

  • 对不起,这是我为jqm写的数据过滤器插件.你可以删除它.这就是你如何初始化其他jqm或jquery插件. (2认同)