前一篇文章瞭解了什麼是模塊,這一篇就簡單介紹一下如何定義並加載一個模塊。數組
1 // student.js 2 // 私有變量 3 var a = 123; 4 function add(student) { 5 console.log('Add student:' + student); 6 } 7 // exports對象上的方法和變量是外部可訪問的 8 exports.add = add;
1 // 使用require加載student.js模塊 2 var student = require('./student.js');
CommonJS加載模塊是「同步」的,也就是說,若是咱們要調用被調用模塊中的公共方法和變量,必定要等被調用模塊加載完畢後才能夠。用於服務端的NodeJS就採用的CommonJS來管理模塊。可是在瀏覽器端,同步加載會由於收到網絡環境的影響存在很大的不肯定性,因此CommonJS不適合於瀏覽器端。瀏覽器
若是在瀏覽器環境下想要從服務器加載模塊,就必須使用「異步」的方式。因此就出現了AMD和CMD解決方案。服務器
1 //define(param1,param2) 經過define方法定義模塊 2 //@param1: 數組,元素爲引入的依賴模塊 3 //@param2: 回調函數,經過形參傳入依賴 4 define(['firstModule','secondModule'],function(firstModule,secondModule){ 5 function foo(){ 6 firstModule.test(); 7 } 8 // 暴露foo() 9 return {foo:foo}; 10 });
同時,AMD容許使用define方法定義模塊是兼容CommonJS規範,可使用require和exports。網絡
1 define(function(require,exports,module){ 2 var reqModule = require("./firstModule"); 3 reqModule.test(); 4 5 exports.pubPort = function(){ 6 // 函數體 7 } 8 });
1 // AMD——依賴前置 2 define(['./a','./b'],function(a,b){ 3 //提早聲明要依賴的模塊 4 }); 5 6 // CMD 7 define(function(require,exports,module){ 8 //依賴能夠就近寫 9 var a = require('./a'); 10 a.test(); 11 12 //軟依賴 13 if(status){ 14 var b = require('./b'); 15 b.test(); 16 } 17 });