繁体   English   中英

从CDN获取jQuery?

[英]Sourcing jQuery from a CDN?

我使用require JS并想知道使用CDN版本的jQuery的最佳方法。 我听说1.7版本是“AMD”,应该有所帮助,但找不到直接的例子。 希望一些RequireJS大师可以帮助我。

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异步加载模块并且乱序 ,所以如果你想要使用的jQuery插件没有包含在define(['jquery'], function ($){ /* plugin code goes here */ }); 调用,插件可以在加载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']
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM