CommonJs
CommonJs模組化運行在node環境中,瀏覽器之所以不兼容CommonJs,是因為瀏覽器缺node環境中的4個變數require,exports,module,global.
CommonJs實現模組化的原理
// 在模組開始執行之前初始化一個module對象,對象裡面有個exports屬性也是一個對象 // moudle.exports即為模組導出的對象 var moudle = { exports:{} }; //使用函數將模組中程式碼包裹不污染全局變數 (function(exports){ // 相當於 var exports = moudle.exports // 模組中程式碼 // var name = 'zwq'; // var age = 18; // function print(){ // console.log(name,age); // } // exports.print = print; //在對象里添加導出的內容 return moudle.exports; //導出moudle.exports對象 })(moudle.exports)
CommonJs使用
1.給exports對象添加屬性導出
2.給module.exports重新賦值
這裡給module.exports可以賦任意值,可以不是對象,當使用require導入時拿到的就是你導出的
為了避免反覆載入同一個模組,nodeJs默認開啟了模組快取,如果載入的模組已經被載入,則會自動使用之前的導出結果。
為了保證高效執行,僅載入必要的模組,nodeJs只有執行到require函數時才會載入並執行模組