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
复制代码