Подтвердить что ты не робот

Поиск jQuery из CDN?

Я использую JS и хочу знать лучший способ использовать версию jQuery для CDN. Я слышал, что версия 1.7 - это "AMD", которая должна помочь, но не может найти прямой пример. Надеюсь, некоторые гуру RequireJS могут помочь мне.

4b9b3361

Ответ 1

jQuery 1.7 регистрируется как модуль AMD под именем "jquery", поэтому вам нужно создать сопоставление для "jquery" с помощью config путей:

requirejs.config({
  paths: {
    'jquery' : 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min'
  }
});

require(['jquery'], function($) {
  //$ points to jQuery
});

Обратите внимание, однако, что RequireJS загружает модули асинхронно и не в порядке, поэтому, если у вас есть плагины jQuery, которые вы хотите использовать, которые не завернуты в вызовы define(['jquery'], function ($){ /* plugin code goes here */ });, плагин может выполнить до загрузки jQuery.

См. require-jquery проект README о способах работы с файлами, которые зависят от jQuery, но не обертываются в вызовы define().

Ответ 2

@jrburke ответ не работает для меня. Согласно RequireJS api doc, вы не должны включать расширение файла в путь. Итак, вот рабочий код:

requirejs.config({
    paths: {
        'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
    }
});

require(['jquery'], function($) {
    //$ points to jQuery
});

У меня есть рабочий пример jsfiddle: http://jsfiddle.net/murrayju/FdKTn/

Ответ 3

Вы можете включить его как зависимость для модуля, но он немного пушистый. например

define([
"order!http://code.jquery.com/jquery-1.7.min.js"
], function($) {
})

Это не так хорошо по двум причинам

1) сам файл jquery не является модулем, поэтому $, который вы получаете от функции, не будет jquery

2) плагин order! не работает с версиями сценариев CDN. См. Заказ Requirejs не работает с зависимостями конфигурации конфига и CDN

У меня не было возможности использовать это в "реальном" проекте еще, потому что мы еще не обновили его, но из моих тестов я обнаружил, что лучший способ - включить jquery в тег script, то он отлично работает как зависимость от ваших модулей. Надеемся, что следующий небольшой образец будет полезен:

<html>
<head>
    <title>Index2</title>
    <script src="../../scripts/libraries/jquery.js" type="text/javascript"></script>
    <script src="../../scripts/libraries/require.js" type="text/javascript"></script>
    <script type="text/javascript"">

        require(
            {baseUrl: 'scripts'}, 
            ['jquery'], 
            function (dollarSign) {
                console.log(dollarSign('div').html('hi'));
            });       
    </script>

</head>
<body>
    <div>

    </div>
</body>
</html>

Ответ 4

Прежде всего, рекомендуется использовать URL-адрес, относящийся к протоколу для jQuery CDN. И, во-вторых, используйте массив в значении с CDN и локальными локальными локальными файлами, если CND мертв. Вы можете использовать столько URL-адресов CDN, которые вы хотите. Не бойтесь, он не хочет загружать второй файл с локального места, если он успешно загружает его из CDN.

requirejs.config({
  paths: {
    'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min', 'lib/jquery-1.10.2.min']
  }
});