jQuery 1.7+;,AMD(RequireJS)和全球范围

jQuery 1.7+;,AMD(RequireJS)和全球范围,jquery,requirejs,amd,Jquery,Requirejs,Amd,我正试图在w/AMD系列中获得更多,我在jQuery源代码中遇到了一些我不能完全理解的东西 以下是部分(在文件末尾之前找到): 从我所看到的,AMD的一个要点是保持全球范围的清洁。然而jQuery选择将引用作为模块返回给自身,但仍然会影响全局空间 在我看来,在返回之前添加“jQuery.noConflict();”可以解决这个问题,并且仍然将对象作为模块返回 我知道RequireJS有一些专门用于jQuery的特殊文件,但我不确定1.7+是否需要它 我的问题分为两部分: 1) 有人知道为什么做出

我正试图在w/AMD系列中获得更多,我在jQuery源代码中遇到了一些我不能完全理解的东西

以下是部分(在文件末尾之前找到):

从我所看到的,AMD的一个要点是保持全球范围的清洁。然而jQuery选择将引用作为模块返回给自身,但仍然会影响全局空间

在我看来,在返回之前添加“jQuery.noConflict();”可以解决这个问题,并且仍然将对象作为模块返回

我知道RequireJS有一些专门用于jQuery的特殊文件,但我不确定1.7+是否需要它

我的问题分为两部分:

1) 有人知道为什么做出这个决定吗


2) 由于这种方法不利于升级,是否有人熟悉使用标准版本的RequireJS和jQuery的更优雅的解决方案?

好的,发布之后,我才意识到我可以通过另一个文件代理它:

//main.js
require.config({
    paths : {
    jquery : 'my/libs/jquery-1.7.1.min',
    jQuery : 'my/src/jquery'
}

主文件使用“jquery”别名而不是仅引用代理中的完全限定位置的原因是因为我使用的是一个依赖于此别名的支持AMD的主干分支:

作者已经有一些提交被文档云接受,并希望这种修改也能被采纳


很有意思的是,看看这是否有任何缺陷,或者AMD battle tested中还有什么其他的答案。

您如何使用此设置处理jQuery插件?我认为他们在全球范围内留下美元的原因是,他们的插件库(他们最大的优势)不是为AMD构建的,它们仍然可以工作。没有办法让美元成为本地的,并且仍然使用插件吗?你看了吗?这在最初发布此问题时不可用。因此,也许这个功能可以做到这一点。但是,我还没有测试它。
//main.js
require.config({
    paths : {
    jquery : 'my/libs/jquery-1.7.1.min',
    jQuery : 'my/src/jquery'
}
//my/src/jquery.js

define([
        'jquery'
    ],
    function($) {
        $.noConflict(true);

        return $;
    }
);