Я использую JS и хочу знать лучший способ использовать версию jQuery для CDN. Я слышал, что версия 1.7 - это "AMD", которая должна помочь, но не может найти прямой пример. Надеюсь, некоторые гуру RequireJS могут помочь мне.
Поиск jQuery из CDN?
Ответ 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']
}
});