Поиск jQuery из CDN? - PullRequest
       10

Поиск jQuery из CDN?

37 голосов
/ 10 ноября 2011

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

Ответы [ 4 ]

46 голосов
/ 11 ноября 2011

jQuery 1.7 регистрируется как модуль AMD под именем 'jquery', поэтому вам необходимо создать отображение для 'jquery', используя конфигурацию путей:

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().

9 голосов
/ 26 марта 2013

@ 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 голосов
/ 10 ноября 2011

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

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

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

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

2) плагин order! плохо работает с CDN-версиями скриптов. См. Порядок Requirejs не работает с приоритетами config и зависимостями 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>
2 голосов
/ 20 января 2014

Прежде всего, рекомендуется использовать Относительно протокола для 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']
  }
});
...