Node.js path 模块
Windows vs POSIX
path 模块在不同操作系统下有差异。POSIX(可移植操作系统接口)标准下路径用正斜杠 /,Windows 用反斜杠 \。
跨平台处理时需指定对应实现:
js
path.basename('C:\\temp\\myfile.html') // 在 POSIX 上结果不对
path.win32.basename('C:\\temp\\myfile.html') // 正确 → 'myfile.html'path.posix— POSIX 系统专用方法path.win32— Windows 系统专用方法
常用 API
path.basename(path)
返回路径的最后一部分(文件名)。
js
path.basename('/aaa/bbb/ccc/index.html') // 'index.html'path.dirname(path)
返回除最后一部分外的路径(目录名),与 basename 互补。
js
path.dirname('/aaa/bbb/ccc/index.html') // '/aaa/bbb/ccc'path.extname(path)
返回文件扩展名,多个 . 时返回最后一个,无扩展名返回空。
js
path.extname('file.txt') // '.txt'
path.extname('file.txt.ddd.aaa') // '.aaa'
path.extname('file') // ''path.join([...paths])
拼接路径,支持 .. ./ ../ 操作符。
js
path.join('/foo', '/cxk', '/ikun') // '/foo/cxk/ikun'
path.join('/foo', '/cxk', '/ikun', '../') // '/foo/cxk/'path.resolve([...paths])
将相对路径解析为绝对路径。
js
path.resolve('/aaa', '/bbb', '/ccc') // '/ccc'(多个绝对路径取最右边)
path.resolve(__dirname, './index.js') // '/User/xm/Desktop/node/index.js'
path.resolve('./index.js') // 工作目录 + '/index.js'join vs resolve 区别:
join只是拼接,返回相对/绝对取决于参数resolve一定返回绝对路径(以当前工作目录为基准)
path.parse(path) / path.format(obj)
js
// parse:路径 → 对象
path.parse('/home/user/dir/file.txt')
// {
// root: '/',
// dir: '/home/user/dir',
// base: 'file.txt',
// ext: '.txt',
// name: 'file'
// }
// format:对象 → 路径(parse 的逆操作)
path.format({ root: '/', dir: '/home/user/dir', base: 'file.txt' })
// '/home/user/dir/file.txt'