使用requirejs和jquery,而不是破坏全局jquery?

Whe*_*yls 21 jquery module requirejs

我第一次在项目中使用requirejs.我正在一个已经有很多Javascript的环境中工作,我正在寻找干净的方法来介绍我自己的代码.

我遇到的问题是我似乎无法找到一个我可以加载的jQuery模块,它不会破坏现有的jQuery.

我很惊讶即使require-jquery.js引入了jQuery的全局版本.有没有办法加载jQuery作为模块而不引入任何全局变量?

Mat*_*t S 25

jQuery 1.7支持AMD加载.但是,诀窍是避免模块命名冲突,因为jQuery将其自己的模块名称硬编码为"jquery".如果您将另一个模块定义为'jquery'(例如,在requirejs配置中的'paths'属性中),则会导致所述冲突.

要在requirejs应用程序范围中加载jQuery,请定义一个模块,例如'jquery-loader',当你想加载jQuery时,通过'jquery-loader'来完成:

define(['path/to/jquery.min'], function () {
    return jQuery.noConflict(true);
});
Run Code Online (Sandbox Code Playgroud)

requirejs将'缓存'你对jQuery的引用,这样noConflict只会在第一次加载jquery-loader时运行.