node自定義模塊的路徑查找


自定義模塊指的是非核心模塊,也不是路徑形式的標識符。它是一種特殊的文件模塊,可能是一個文件或者包的形式。這類模塊的查找是最費時的,也是所有方式中最慢的一種。

模塊路徑是Node在定位文件模塊的具體文件時制定的查找策略,具體表現為一個路徑組成的數組。關於這個路徑的生成規則,我們可以手動嘗試一番。

創建test.js文件,其內容為 console.log(module.paths); 。
將其放到任意一個目錄中然后執行 node test.js 。

在Linux下,你可能得到的是這樣一個數組輸出:

[ '/home/jackson/research/node_modules',
'/home/jackson/node_modules',
'/home/node_modules',
'/node_modules' ]
1
2
3
4
而在Windows下,也許是這樣:

[ 'c:\\nodejs\\node_modules', 'c:\\node_modules' ]
1
可以看出,模塊路徑的生成規則如下所示。

前文件目錄下的node_modules目錄。
父目錄下的node_modules目錄。
父目錄的父目錄下的node_modules目錄。
沿路徑向上逐級遞歸,直到根目錄下的node_modules目錄。
它的生成方式與JavaScript的原型鏈或作用域鏈的查找方式十分類似。在加載的過程中,Node會逐個嘗試模塊路徑中的路徑,直到找到目標文件為止。可以看出,當前文件的路徑越深,模塊查找耗時會越多,這是自定義模塊的加載速度是最慢的原因。

webpack可以配置模塊的查找路徑

resolve: {
modules: [path.resolve(__dirname, 'node_modules')]
}
1
2
3
指定只在當前模塊的node_modules查找模塊
---------------------


免責聲明!

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



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