require.js

requirejs的做用:jquery

1.實現js文件的異步加載,防止頁面失去響應;
2.管理模塊與模塊之間的依賴性,以便於開發人員的編寫與維護

 如何引用angularjs

方式一,放在網頁底部進行加載數組

方式二,異步

<script src="js/require.js" defer async="true"></script>

如何加載本身的文件async

若是咱們的文件爲main.js函數

<script src="js/require.js" data-main="js/main"></script>

 如何編寫主模塊requirejs

1.不依賴其餘模塊
直接寫js代碼
2.依賴其餘模塊
require(['A','B', 'C'], function(A, B, C)){ //相似於angularjs中的DI依賴注入
    //
});    

require()函數有兩個參數,第一個參數是數組,爲所依賴的模塊;第二個參數爲回調函數,當前面指定的模塊都加載成功後,它將會被調用,加載的模塊會以參數形式傳入該函數,從而在回調函數內部就能夠使用這些模塊。ui

加載模塊spa

require.config({
   paths: {
      "jquery": "jquery.min",
    "underscore": "underscore.min",
    "backbone": "backbone.min"    
   } 
});
路徑能夠直接改變基目錄baseUrl,也可直接指定網址。
這個配置寫在main.js頭部

如何編寫AMD模塊code

1.若是不依賴其餘模塊,那麼可直接定義在define()函數中
 // math.js
  define(function (){
    var add = function (x,y){
      return x+y;
    };
    return {
      add: add
    };
  });
   加載方式
      // main.js
  require(['math'], function (math){
    alert(math.add(1,1));
  });
2.若是這個模塊還依賴其餘模塊,那麼define()函數的第一個參數須是一個數組,致命該模塊的依賴性
  define(['myLib'], function(myLib){
    function foo(){
      myLib.doSomething();
    }
    return {
      foo : foo
    };
  });

加載非規範的模塊

  require.config({
    shim: {

      'underscore':{
        exports: '_'
      },
      'backbone': {
        deps: ['underscore', 'jquery'],
        exports: 'Backbone'
      }
    }
  });

require.config()接受一個配置對象,這個對象除了有前面說過的paths屬性以外,還有一個shim屬性,專門用來配置不兼容的模塊,具體來講,每一個模塊要定義,exports值輸出的變量名,代表這個模塊外部調用時的名稱,deps數組,代表該模塊的依賴性。

相關文章
相關標籤/搜索