2014-02-11 44 views
2

我是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

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

相关问题