我正在尝试与 AMD 保持一致,并且我在 jQuery 源代码中遇到了一些我无法完全理解的东西。
这是部分(在文件末尾之前找到):
if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
define( "jquery", [], function () { return jQuery; } );
}
据我所知,AMD 的一大重点是保持全局范围的清洁。然而 jQuery 选择以模块的形式返回对自身的引用,但仍会感染全局空间。
在我看来,添加“jQuery.noConflict();” 就在 return 将解决此问题并仍将对象作为模块返回之前。
我知道 RequireJS 有一些专门用于 jQuery 的特殊文件,但我不确定 1.7+ 是否需要它。
我的问题是两部分:
1)有谁知道为什么做出这个决定?
2) 由于这种方法对升级不友好,有没有人熟悉使用标准版 RequireJS 和 jQuery 的更优雅的解决方案?