我正在使用 require JS 并且想知道使用 jQuery 的 CDN 版本的最佳方法。我听说 1.7 版本是“AMD”,它应该有帮助,但找不到一个直接的例子。希望一些 RequireJS 大师可以帮助我。
4 回答
jQuery 1.7 将自己注册为名为“jquery”的 AMD 模块,因此您需要使用路径配置为“jquery”创建映射:
requirejs.config({
paths: {
'jquery' : 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min'
}
});
require(['jquery'], function($) {
//$ points to jQuery
});
但是请注意,RequireJS 异步加载模块并且是乱序的,因此如果您要使用未包含在define(['jquery'], function ($){ /* plugin code goes here */ });
调用中的 jQuery 插件,则该插件可以在加载 jQuery 之前执行。
请参阅require-jquery项目的自述文件,了解处理依赖 jQuery 但不将自身包装在define()
调用中的文件的方法。
@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/
您可以将其作为模块的依赖项包含在内,但它有点脆弱。例如
define([
"order!http://code.jquery.com/jquery-1.7.min.js"
], function($) {
})
这不是很好有两个原因
1)jquery文件本身不是一个模块,所以$
你从函数中得到的不是jquery
2) 该order!
插件不适用于 CDN 版本的脚本。请参阅Requirejs 的顺序不适用于优先级配置和 CDN 依赖项
我还没有机会在“真正的”项目中使用它,因为我们还没有升级,但是从我的测试中我发现最好的方法是将 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>
首先,推荐使用jQuery CDN的相对协议 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']
}
});