概述
每個文件就是一個模塊阳仔,有自己的作用域飞袋。在一個文件里面定義的變量、函數(shù)寞缝、類派敷,都是私有的蛹批,對其他文件不可見撰洗。每個模塊內部,module變量代表當前模塊腐芍。這個變量是一個對象差导,它的exports屬性(即module.exports)是對外的接口。加載某個模塊猪勇,其實是加載該模塊的module.exports屬性设褐。
- module.exports對外的接口.
- require方法用于加載模塊。
Module對象
每個模塊內部泣刹,都有一個module對象助析,代表當前模塊。它有以下屬性椅您。
- module.id 模塊的識別符外冀,通常是帶有絕對路徑的模塊文件名。
- module.filename 模塊的文件名掀泳,帶有絕對路徑雪隧。
- module.loaded 返回一個布爾值,表示模塊是否已經完成加載员舵。
- module.parent 返回一個對象脑沿,表示調用該模塊的模塊。
- module.children 返回一個數(shù)組固灵,表示該模塊要用到的其他模塊捅伤。
- module.exports 表示模塊對外輸出的值。
require命令
require命令的基本功能是巫玻,讀入并執(zhí)行一個JavaScript文件丛忆,然后返回該模塊的exports對象。如果沒有發(fā)現(xiàn)指定模塊仍秤,會報錯熄诡。
- 加載規(guī)則:后綴名默認為.js。
如果參數(shù)字符串以“/”開頭诗力,則表示加載的是一個位于絕對路徑的模塊文件凰浮。
如果參數(shù)字符串以“./”開頭,則表示加載的是一個位于相對路徑苇本。
如果參數(shù)字符串不以“./“或”/“開頭袜茧,則表示加載的是一個默認提供的核心模塊(位于Node的系統(tǒng)安裝目錄中),或者一個位于各級node_modules目錄的已安裝模塊(全局安裝或局部安裝)瓣窄。