为什么jQuery创建全局变量$如果它符合AMD标准?

时间:2014-02-11 02:36:04

标签: javascript requirejs amd

我是AMD的新手和像require.js这样的加载器,但到目前为止,我一直假设一个结构合理的require.js项目不会创建任何全局变量。为什么像jQuery这样的脚本可以通过require.js加载并且看起来与AMD兼容,但是它仍然会创建一个全局$变量?

我是否误解了AMD合规的含义或工作原理?我正在考虑编写自己的AMD兼容模块,但我想确保我正确地做事......

requirejs.config({
    baseUrl: 'js',
    paths: {
        "jquery": "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min"
    }
});

require(["jquery"], function(jquery) {
    console.log(jquery);
    console.log($); // This works, but I wouldn't expect it to.
});

1 个答案:

答案 0 :(得分:1)

JQuery创建全局$变量,因为JQuery不是为AMD模块设计的,尽管它确实支持它。您可以将JQuery包装为删除here所描述的全局$范围,如果您阅读有关JQuery的部分,它将解释全局变量存在的原因。我记得当我第一次开始使用requirejs时这样做但是它导致了插件的一些问题...我记得