Node.js中的文件路徑大概有
// 絕對(duì)路徑
__dirname,
__filename,
process.cwd(),
// 相對(duì)路徑
./,
../
前三個(gè)都是絕對(duì)路徑频敛,為了便于比較,./ 和 ../ 我們通過(guò) path.resolve('./')來(lái)轉(zhuǎn)換為絕對(duì)路徑馅扣。
__dirname: 獲得當(dāng)前執(zhí)行文件所在目錄的完整目錄名
__filename: 獲得當(dāng)前執(zhí)行文件的帶有完整絕對(duì)路徑的文件名
process.cwd():獲得當(dāng)前執(zhí)行node命令時(shí)候的文件夾目錄名
./: 文件所在目錄
有require參與的情況下結(jié)果有所不同
__dirname: 總是返回被執(zhí)行的 js 所在文件夾的絕對(duì)路徑
__filename: 總是返回被執(zhí)行的 js 的絕對(duì)路徑
process.cwd(): 總是返回運(yùn)行 node 命令時(shí)所在的文件夾的絕對(duì)路徑
./: 跟 process.cwd() 一樣斟赚,返回 node 命令時(shí)所在的文件夾的絕對(duì)路徑
談及原因,來(lái)了解一下require() 的基本用法吧:
下面的內(nèi)容來(lái)自require() 源碼解讀,由阮一峰翻譯自《Node使用手冊(cè)》差油。
Bimg20174121494579883637.png
由此可見汁展,關(guān)于 ./ 正確的結(jié)論是:
在 require() 中使用是跟 __dirname 的效果相同,不會(huì)因?yàn)閱?dòng)腳本的目錄不一樣而改變厌殉;
在其他情況下跟 process.cwd() 效果相同食绿,是相對(duì)于啟動(dòng)腳本所在目錄的路徑
最后總結(jié)一下:
__dirname: 獲得當(dāng)前執(zhí)行文件所在目錄的完整目錄名
__filename: 獲得當(dāng)前執(zhí)行文件的帶有完整絕對(duì)路徑的文件名
process.cwd():獲得當(dāng)前執(zhí)行node命令時(shí)候的文件夾目錄名
./: 不使用require時(shí)候,./與process.cwd()一樣公罕,使用require時(shí)候器紧,與__dirname一樣
只有在 require() 時(shí)才使用相對(duì)路徑(./, ../)的寫法,其他地方一律使用絕對(duì)路徑
本文僅作為自我學(xué)習(xí)總結(jié)楼眷,非原創(chuàng)文章铲汪。