看了很多博客,發(fā)現(xiàn)都是直接照抄 NODE 官方文檔.
連例子都一模一樣.
感覺看不太懂.于是就自己體就琢磨了一下.
path.join
path.join 理解起來(lái)非常簡(jiǎn)單
它的作用僅僅是使用正確的系統(tǒng)路徑分隔連接路徑字符串
const path = require('path')
path.join('////////a','b////')
輸出結(jié)果:
/a/b
- 如果讓我們自己拼接
////////a,b////為一個(gè)正確的路徑,- 我們必須把
/////////a->/a - 我們必須把
b////->b/ - 在拼接
/a和 'b/' 的之前,還需要在/a后面加一個(gè)/->/a/ - 最終變成
/a/b
- 我們必須把
如果操作系統(tǒng)不同,不如
mac里用/, 而windows中\,我們還需要根據(jù)操作系統(tǒng)類型,修改用戶輸入錯(cuò)誤的路徑分隔符.
補(bǔ)充:
path.join僅僅是把傳入的參數(shù)以當(dāng)前操作系統(tǒng)正確的路徑方式拼接,僅此而已.
path.reslove
我這里也要引用一下官方解釋了..
path.reslove([from...],to)
官方解釋為:把一些列路徑解析成
to的絕對(duì)路徑.
光看這種解釋,還是比較懵逼.
但至少可以得到2條信息
- 最總路徑里一定包含
to的名字. - 最終返回的一定是個(gè)絕對(duì)路徑.
例子1:
假如現(xiàn)在有一個(gè) reslove.js,此js文件在 /Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/文件夾中.
console.log(path.resolve('a','b','c','d'))
執(zhí)行上述那段代碼,就相當(dāng)于當(dāng)前搜出的js文件路徑(/Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/)的終端環(huán)境下依次輸入
/Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode> cd a
/Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode//a> cd b
/Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/a/b> cd c
/Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/a/b/c> cd d
/Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/a/b/c/d> pwd
/Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/a/b/c/d
由于 d 是 path.reslove() 函數(shù)的最后一個(gè)參數(shù).
path.reslove又最終返回的是一個(gè)絕對(duì)路徑.
所以,這里的返回值是
/Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/a/b/c/d
例子2
假如現(xiàn)在有一個(gè) reslove.js,此js文件在 /Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/文件夾中.
console.log(path.resolve('a','b','/c','f'))
里面有一個(gè)特殊的直接表示系統(tǒng)根路徑的 /c
根據(jù)上述的規(guī)律,應(yīng)該輸出 /c/f
最后輸出的結(jié)果也是對(duì)應(yīng)上的.
例子3
假如現(xiàn)在有一個(gè) reslove.js,此js文件在 /Users/relax/Desktop/代碼/前端學(xué)習(xí)/想法測(cè)試/aboutNode/文件夾中.
console.log(path.resolve('a','b','c','/f'))
直接輸出 /f
因?yàn)樵诮K端里直接輸入 cd /f 就是進(jìn)入到根目錄的 f 文件夾里.
path.reslove([from..],to) 運(yùn)行原理說(shuō)明
根據(jù)傳入?yún)?shù),類似在此函數(shù)執(zhí)行的路徑下開啟了一個(gè)終端,并以此 cd 參數(shù).只到解析到
to的路徑為止.
path.join() & path.resolve()
-
path.join單純的以正確的路徑分割符拼接字符串路徑. -
path.reslove, 類似于在內(nèi)部調(diào)用了終端命令,挨個(gè)cd傳入的參數(shù),直到遇到to為止. - 它倆都不關(guān)心最終出來(lái)的字符串路徑是否真實(shí)存在.