37

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

4

4 回答 4

46

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

于 2011-11-10T23:36:43.810 回答
9

@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/

于 2013-03-26T15:57:40.293 回答
3

您可以将其作为模块的依赖项包含在内,但它有点脆弱。例如

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>
于 2011-11-09T21:19:33.347 回答
2

首先,推荐使用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']
  }
});
于 2014-01-20T13:35:36.113 回答