JS沒有模塊系統、標準庫較少、缺少包管理工具;爲了讓JS能夠在任何地方運行,以達到Java、C#、PHP這些後臺語言具有開發大型應用的能力;node
在CommonJs規範中:緩存
一個文件就是一個模塊,擁有單獨的做用域;函數
普通方式定義的變量、函數、對象都屬於該模塊內;工具
經過require
來加載模塊;ui
經過exports
和modul.exports
來暴露模塊中的內容;code
模塊中的全部代碼都運行在模塊做用域,不會污染全局做用域;同一個模塊能夠屢次加載,但只會在第一次加載的時候運行一次,而後運行結果就被緩存了,之後再加載,就直接讀取緩存結果;模塊的加載順序,按照代碼的出現順序是同步加載的;對象
__dirname
表明當前模塊文件所在的文件夾路徑,__filename
表明當前模塊文件所在的文件夾路徑+文件名;作用域
require
(同步加載)基本功能:讀取並執行一個JS文件,而後返回該模塊的exports
對象,若是沒有發現指定模塊會報錯;開發
模塊內的exports
:爲了方便,node爲每一個模塊提供一個exports
變量,其指向module.exports
,至關於在模塊頭部加了這句話: var exports = module.exports
,在對外輸出時,能夠給exports
對象添加方法,PS:不能直接賦值(由於這樣就切斷了exports
和module.exports
的聯繫);同步
劃重點: