概述
每個文件就是一個模塊,有自己的作用域。在一個文件里面定義的變量、函數、類,都是私有的,對其他文件不可見。每個模塊內部,module變量代表當前模塊。這個變量是一個對象,它的exports屬性(即module.exports)是對外的接口。加載某個模塊,其實是加載該模塊的module.exports屬性。
- module.exports對外的接口.
- require方法用于加載模塊。
Module對象
每個模塊內部,都有一個module對象,代表當前模塊。它有以下屬性。
- module.id 模塊的識別符,通常是帶有絕對路徑的模塊文件名。
- module.filename 模塊的文件名,帶有絕對路徑。
- module.loaded 返回一個布爾值,表示模塊是否已經完成加載。
- module.parent 返回一個對象,表示調用該模塊的模塊。
- module.children 返回一個數組,表示該模塊要用到的其他模塊。
- module.exports 表示模塊對外輸出的值。
require命令
require命令的基本功能是,讀入并執行一個JavaScript文件,然后返回該模塊的exports對象。如果沒有發現指定模塊,會報錯。
- 加載規則:后綴名默認為.js。
如果參數字符串以“/”開頭,則表示加載的是一個位于絕對路徑的模塊文件。
如果參數字符串以“./”開頭,則表示加載的是一個位于相對路徑。
如果參數字符串不以“./“或”/“開頭,則表示加載的是一個默認提供的核心模塊(位于Node的系統安裝目錄中),或者一個位于各級node_modules目錄的已安裝模塊(全局安裝或局部安裝)。