我正在使用require JS并想知道使用CDN版本的jQuery的最佳方法。我听说1.7版本是“AMD”,应该有所帮助,但找不到直接的例子。希望一些RequireJS大师可以帮助我。
答案 0 :(得分:45)
jQuery 1.7将自己注册为名为“jquery”的AMD模块,因此您需要使用路径config为'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项目的自述文件,了解如何处理依赖于jQuery的文件,但不要将自己包装在define()
个调用中。
答案 1 :(得分:9)
@ jrburke的回答对我不起作用。根据{{3}},您不应在路径中包含文件扩展名。所以这是工作代码:
requirejs.config({
paths: {
'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
}
});
require(['jquery'], function($) {
//$ points to jQuery
});
我在jsfiddle上有一个工作示例: RequireJS api doc
答案 2 :(得分:3)
您可以将其作为模块的依赖项包含在内,但它有点不对劲。 e.g
define([
"order!http://code.jquery.com/jquery-1.7.min.js"
], function($) {
})
这有两个原因不太好
1)jquery文件本身不是模块,因此从函数中获取的$
将不是jquery
2)order!
插件与CDN版本的脚本不兼容。见Requirejs' order does not work with priority config and CDN dependencies
我还没有机会在“真正的”项目中使用它,因为我们尚未升级,但从我的测试中我发现最好的方法是在脚本标记中包含jquery,然后它非常适合作为模块的依赖。希望以下小样本会有所帮助:
<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>
答案 3 :(得分:2)
首先,建议对jQuery CDN使用Protocol-relative URL。 第二,如果CND死了,则使用带有CDN和本地位置的数组中的数组来加载本地文件。您可以使用所需数量的CDN网址。不要害怕,如果从CDN成功下载它,它不想从本地加载第二个文件。
requirejs.config({
paths: {
'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min', 'lib/jquery-1.10.2.min']
}
});