Sourcing jQuery from a CDN?

Sourcing jQuery from a CDN?

本文关键字:CDN from jQuery Sourcing      更新时间:2023-09-26

我正在使用require JS,想知道使用CDN版本的jQuery的最佳方法。我听说1.7版本是"AMD",这应该有帮助,但找不到一个直接的例子。

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()调用中的文件。

@jrburke的回答不适合我。根据RequireJS api文档,您不应该在路径中包含文件扩展名。下面是工作代码:

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& # 39;order不能使用优先级配置和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。其次,如果CDN已死,则使用arrayinvalue和本地位置来加载本地文件。您可以使用任意多的cdn url。不要害怕,如果从CDN下载成功,它不会从本地加载第二个文件。

requirejs.config({
  paths: {
    'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min', 'lib/jquery-1.10.2.min']
  }
});