requireJS中的shim——以加載jQuery插件爲例

    沒有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

相關文章
相關標籤/搜索