Загружать jQuery Mobile скрипт асинхронно? - PullRequest
13 голосов
/ 14 марта 2012

Кто-нибудь пытался реализовать загрузку jQuery Mobile с сопровождающими скриптами асинхронно с помощью head.js или другим способом? Я экспериментирую с ним прямо сейчас, и, хотя он дает огромный прирост производительности, кажется, что он нарушает навигацию (в частности, обработку событий с измененными параметрами). Поэтому мне интересно, если кто-то может поделиться своим опытом с ним.

ОБНОВЛЕНИЕ: проблема с событием хэшированного, оказалось, вызвана другим компонентом. Так что реализуйте асинхронную загрузку jQM и других ваших ресурсов JavaScript, это безопасно и значительно увеличивает время загрузки и производительность вашего JS-приложения. Для этого я использую head.js, вы можете использовать все, что лучше для вас.

Ответы [ 2 ]

1 голос
/ 02 февраля 2016

Это именно то, для чего предназначен пакет типа RequireJS .Использование загрузчика модулей, такого как RequireJS, позволяет асинхронно загружать несколько файлов JS и определять обратные вызовы при загрузке файлов.

Вот простой пример ...

Вместо загрузки вашего jQuery и / или других файлов JS, единственным <script> для загрузки является скрипт RequireJS.

<script data-main="js/app" src="js/require.js"></script>

Атрибут data-main указывает RequireJS загрузить файл в /js/app.js, который содержит ваши параметры конфигурации RequireJS.Вот пример /js/app.js:

requirejs.config({
    "baseUrl": "js/lib",
    "paths": {
      "app": "../app",
      "jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
      "jqueryMobile": "//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min"
    }
});

// Load the main app module to start the app
requirejs(["app/main"]);

В этом случае /js/app.js используется в основном для настройки путей.Свойство app указывает RequireJS, где искать JS вашего конкретного приложения, а свойство jquery указывает RequireJS путь к URL Google CDN для jQuery.Наконец, используйте метод requirejs(), чтобы загрузить файл .js приложений.Обратите внимание, что все пути не указаны .js.

На этом этапе RequireJS будет искать ваш app JS на app/main.js.Создайте файл в /js/app/ с именем main.js - теперь у вас есть файл /js/app/main.js.

Этот файл будет загружать как файлы jQuery, так и jQuery Mobile из CDN Google, асинхронно и содержатьостальная часть логики вашего приложения.Вот пример /js/app/main.js:

define(["jquery", "jqueryMobile"], function($) {
    //jQuery and jQuery Mobile have been loaded.
    $(function() {
        // Do stuff with jQuery and jQuery Mobile
    });
});

Какой эффект это имеет?Давайте посмотрим на сетевой водопад, чтобы увидеть, как загружаются файлы:

enter image description here

На приведенной выше диаграмме асинхронная загрузка jQuery и jQuery Mobile.

По аналогичной демонстрации см. Пример RequireJS jQuery .

0 голосов
/ 30 апреля 2012

использовать атрибут Async при загрузке Java-скрипта на страницу.но это будет поддерживаться только в современном браузере (Html5) для деталей. См. эту ссылку

http://www.w3schools.com/tags/att_script_async.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...