什麼是require?javascript
-Node使用CommonJS模塊規範,內置require函數用於加載模塊文件java
-require的基本功能是>讀入並執行一個javascript文件,而後返回該模塊的exports對象node
-若沒有發現指定模塊,則報錯json
本身實現require函數緩存
-定義模塊函數
-實現測試
註釋ui
rquire擴展名對象
--require加載文件時能夠省略擴展名blog
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數據,此時就須要清除緩存,通常都是對數據作清除緩存操做
若是不須要緩存,能夠將暴漏的屬性改成暴漏方法(行爲),由於暴漏的方法在每一次加載的時候都會執行,從而不會進行緩存。