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數組,代表該模塊的依賴性。