path.join & path.relsove 的區(qū)別

看了很多博客,發(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

由于 dpath.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í)存在.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,338評(píng)論 0 10
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,920評(píng)論 0 13
  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,733評(píng)論 2 41
  • 夏掌柜/撫琴的人 “董小姐 你從沒忘記你的微笑 就算你和我一樣 渴望著衰老 董小姐 你嘴角向下的時(shí)候很美 就像安和...
    干貨一籮筐閱讀 1,036評(píng)論 0 2
  • 飲食一根鼎養(yǎng)生,中醫(yī)男性飲食觀 《本草綱目》中李時(shí)珍曾提出“飲食者,人之命脈也”的中醫(yī)飲食觀點(diǎn)??梢?,飲食是關(guān)系人...
    一根鼎閱讀 588評(píng)論 0 0

友情鏈接更多精彩內(nèi)容