path.join方法僅僅是爲了合併提供的路徑片斷,不關心參數是相對路徑('./'、'../')仍是絕對路徑('/'),合併同時會對路徑進行格式化。javascript
const path = require('path')
path.join('/a', 'b', 'c') => '/a/b/c'
path.join('/a', '/b', '//c') => '/a/b/c'
path.join('/a', 'b', '/c') => '/a/b/c'
path.join('/a', '../b', '/c') => '/b/c'
複製代碼
老是返回絕對路徑。 會根據提供的最後一個參數朝前查找, 直至找到絕對路徑。 若是最後一個參數爲絕對路徑,則直接返回最後一個參數。 同時它也會合並相對路徑而且格式化處理。java
path.resolve('/a', '/b') => '/b'
path.resolve('/a', './b') => '/a/b'
// 一樣也會作格式化處理
path.resolve('/a', '../c') => '/c'
複製代碼
注意:當提供的參數中全是相對路徑時,會合並這些相對路徑,並將***運行目錄***的絕對路徑拼接在前面。注意是運行目錄並非文件所在目錄。ui
// 假設在/user/somebody/存在test目錄
// 文件 test/inner/index.js
path.resolve('./aa')
// 在test目錄下執行時, 會返回/user/somebody/test/aa,
// 在inner目錄下執行時,會返回/user/somebody/test/inner/aa
複製代碼