1. path.resolve()
path.resolve() 方法將路徑或路徑片段的序列解析為絕對(duì)路徑。
給定的路徑序列從右到左進(jìn)行處理,每個(gè)后續(xù)的 path 前置,直到構(gòu)造出一個(gè)絕對(duì)路徑。 例如,給定的路徑片段序列:/foo、 /bar、 baz,調(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é)
- path.resolve() 從右向左拼接,如果提前遇到了
/(linux or mac)根目錄符號(hào),則提前結(jié)束,因?yàn)橐呀?jīng)達(dá)到拼接出絕對(duì)路徑的目的。 - path.join() 無(wú)論有無(wú)
/(linux or mac) 都只是進(jìn)行簡(jiǎn)單的片段連接。 - 二者遇到
..上一層級(jí)目錄的指示,都會(huì)正常處理跳轉(zhuǎn)。