什么是require?
-Node使用CommonJS模塊規范,內置require函數用於加載模塊文件
-require的基本功能是>讀入並執行一個javascript文件,然后返回該模塊的exports對象
-若沒有發現指定模塊,則報錯
自己實現require函數
-定義模塊
-實現
注釋
rquire擴展名
--require加載文件時可以省略擴展名
require加載文件規則
-通過 ./ 或者 ../ 開頭
--按照相對路徑從當前文件所在文件夾開始尋找模塊
-通過 / 開頭
--以系統根目錄開始尋找模塊
-不以 ./ 或 / 開頭,分為兩種情況
--表示加載的是一個默認提供的核心模塊> 位於Node的系統安裝目錄中
--從當前目錄向上搜索node_modules目錄中的文件
---如果自己定義一個模塊在node_modules目錄中,而加載時不以 ./ 或 / 開頭,直接以文件名加載,無論node_modules在什么位置,都可以被加載到,因為當加載時會一直向上去找,一直到找不到為止,此加載符合就近原則
-模塊名稱重復,系統模塊的優先級別最高
require不僅可以載入js模塊,也可以載入JSON對象
-加載json文件,大部分用於讀取配置信息
-require也可以加載文件夾,加載文件夾分為兩種情況
--若文件夾中不存在package.json,直接加載文件夾內的index.js文件
--若package.json文件存在,則根據配置問價信息加載
模塊的緩存
-第一次加載某個緩存時,Node會緩存該模塊,以后再加載該模塊,就直接從緩存取出該模塊的module.exports屬性(不會再執行該模塊)
-如果需要多次執行模塊中的代碼,一般可以讓模塊暴漏行為(函數)
-模塊的緩存可以通過require.cache拿到,同樣也可以刪除
間的的測試緩存
-模塊
--module.exports = new Date();
-文件
執行文件可以看到,得到的毫秒是不變的,說明已經緩存。
清空緩存
-在加載模塊之前進行緩存的清楚
-什么時候需要清楚緩存?
--由於可以加載json數據,所以每次數據更新時,需要同步更新json數據,此時就需要清除緩存,一般都是對數據做清除緩存操作
如果不需要緩存,可以將暴漏的屬性改為暴漏方法(行為),因為暴漏的方法在每一次加載的時候都會執行,從而不會進行緩存。