没有requireJS框架以前,若是咱们想使用jquery框架,会在HTML页面中经过<script>标签加载,这个时候jquery框架生成全局变量$和jQuery等全局变量。若是项目中引用了requireJS框架,采用模块化的方式加载jquery,那么jquery不会再添加全局变量$和 jQuery 。如今问题来了,虽然jquery框架已经开始支持AMD规范,可是jquery的众多插件仍是不支持AMD,仍然像之前同样须要使用全局变量$。jquery插件大多都是以下结构:jquery
(function( $, undefined ) { })( jQuery );
若是咱们项目中使用了jquery插件,可是jquery框架是经过requireJS加载的(不会添加全局变量$),那怎么完成jquery插件的加载呢?使用传统的方,在HTML页面中经过<script>加载jquery插件,确定是不行的。这个时候咱们须要使用到数组
requireJS的shim参数,来完成jquery插件的加载。下面咱们以加载jquery-ui的slider插件为例:框架
requirejs.config({ shim: { 'jquery.ui.core': ['jquery'], 'jquery.ui.widget': ['jquery'], 'jquery.ui.mouse': ['jquery'], 'jquery.ui.slider':['jquery'] }, paths : { jquery : 'jquery-2.1.1/jquery', domReady : 'require-2.1.11/domReady', 'jquery.ui.core' : 'jquery-ui-1.10.4/development-bundle/ui/jquery.ui.core', 'jquery.ui.widget' : 'jquery-ui-1.10.4/development-bundle/ui/jquery.ui.widget', 'jquery.ui.mouse' : 'jquery-ui-1.10.4/development-bundle/ui/jquery.ui.mouse', 'jquery.ui.slider' : 'jquery-ui-1.10.4/development-bundle/ui/jquery.ui.slider' } }); require([ 'jquery', 'domReady','jquery.ui.core','jquery.ui.widget','jquery.ui.mouse','jquery.ui.slider'], function($) { $("#slider" ).slider({ value:0, min: 0, max: 4, step: 1, slide: function( event, ui ) {} }); });
在path参数中,咱们设置了模块名称(能够随意指定)和js文件路径的映射,而后在shim参数中,指定了模块名称和它的依赖数组,上面咱们的jquery插件只依赖于jquery框架。经过这种方式,就能够使用requireJS完成jquery和其插件的加载,不会有全局变量污染问题。dom