require、緩存


什么是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數據,此時就需要清除緩存,一般都是對數據做清除緩存操作

 如果不需要緩存,可以將暴漏的屬性改為暴漏方法(行為),因為暴漏的方法在每一次加載的時候都會執行,從而不會進行緩存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM