Node.js 中 path.resolve() 和 path.join() 的區(qū)別

文檔-path路徑

1. path.resolve()

path.resolve() 方法將路徑或路徑片段的序列解析為絕對(duì)路徑。
給定的路徑序列從右到左進(jìn)行處理,每個(gè)后續(xù)的 path 前置,直到構(gòu)造出一個(gè)絕對(duì)路徑。 例如,給定的路徑片段序列:/foo、 /barbaz,調(diào)用 path.resolve('/foo', '/bar', 'baz') 將返回 /bar/baz。
如果在處理完所有給定的 path 片段之后還未生成絕對(duì)路徑,則再加上當(dāng)前工作目錄。
生成的路徑已規(guī)范化,并且除非將路徑解析為根目錄,否則將刪除尾部斜杠。
零長(zhǎng)度的 path 片段會(huì)被忽略。
如果沒(méi)有傳入 path 片段,則 path.resolve() 將返回當(dāng)前工作目錄的絕對(duì)路徑。

path.resolve('/foo/bar', './baz');
// 返回: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');
// 返回: '/tmp/file'

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 如果當(dāng)前工作目錄是 /home/myself/node,
// 則返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'

如果任何參數(shù)不是字符串,則拋出 TypeError。

2. path.join()

path.join() 方法使用平臺(tái)特定的分隔符作為定界符將所有給定的 path 片段連接在一起,然后規(guī)范化生成的路徑。

零長(zhǎng)度的 path 片段會(huì)被忽略。 如果連接的路徑字符串是零長(zhǎng)度的字符串,則返回 '.',表示當(dāng)前工作目錄。

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// 返回: '/foo/bar/baz/asdf'

path.join('foo', {}, 'bar');
// 拋出 'TypeError: Path must be a string. Received {}'

如果任何路徑片段不是字符串,則拋出 TypeError。

3. 總結(jié)

  1. path.resolve() 從右向左拼接,如果提前遇到了/(linux or mac)根目錄符號(hào),則提前結(jié)束,因?yàn)橐呀?jīng)達(dá)到拼接出絕對(duì)路徑的目的。
  2. path.join() 無(wú)論有無(wú) /(linux or mac) 都只是進(jìn)行簡(jiǎn)單的片段連接。
  3. 二者遇到 .. 上一層級(jí)目錄的指示,都會(huì)正常處理跳轉(zhuǎn)。
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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