Jquery mobile require.js и позвоночник - программирование
Подтвердить что ты не робот

Jquery mobile require.js и позвоночник

Я действительно борюсь с require.js и jquery mobile. У меня небольшая структура файлов и шаблон загрузки, основанный на

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

но он старый, и мне пришлось сделать адаптацию для версии 2.0. Является ли сообщество принятым способом использования jquery mobile, backbonejs и requirejs вместе? Я хотел бы использовать магистральную маршрутизацию, а не мобильные jQuery. Кроме того, у этого шаблона есть телефонная задержка, с которой я не занимаюсь.

4b9b3361

Ответ 1

Вот файл 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 для jqm (jquery mobile), я загружу их все, и благодаря вышеперечисленному коде прокрутки зависимости загрузятся в правильном порядке. Я фактически не передаю никакой переменной jqm в вызов функции, который передает только $и приложение. Следующей важной частью является файл jqm-config:

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

Вы можете разместить весь свой код preinit для jqm в этом файле. После всего этого вы сможете использовать jqm!