从CDN采购jQuery?
我正在使用require JS,并想知道使用jQuery的CDN版本的最佳方法。 我听说1.7版本是应该帮助,但不能find一个直接的例子“AMD”。 希望有些RequireJS大师可以帮助我。
jQuery 1.7将自己注册为一个名为'jquery'的AMD模块,所以你需要使用pathconfig来创build'jquery'映射:
requirejs.config({ paths: { 'jquery' : 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min' } }); require(['jquery'], function($) { //$ points to jQuery });
但是请注意,RequireJSasynchronous加载模块,所以如果你想要使用的jQuery插件不包含在define(['jquery'], function ($){ /* plugin code goes here */ });
调用,插件可以在jQuery加载之前执行。
请参阅require-jquery项目的自述文件,了解如何处理依赖jQuery的文件,但不要将自己封装在define()
调用中。
@ jrburke的答案不适合我。 根据RequireJS API文档 ,您不应该在path中包含文件扩展名。 所以这里是工作代码:
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的顺序不适用于优先configuration和CDN依赖项
我还没有机会在“真正的”项目中使用它,因为我们还没有升级,但是从我的testing中我发现最好的方法是将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中的值和本地地址作为加载本地文件的值。 您可以使用尽可能多的CDNurl。 不要害怕,如果成功从CDN下载它不想从本地加载第二个文件。
requirejs.config({ paths: { 'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min', 'lib/jquery-1.10.2.min'] } });