path.join([...paths])和path.resolve([...paths])的区别
2024年4月22日大约 1 分钟
path.join([...paths])
path.join();
// => .
path.join('');
// => .
path.join('.');
// => .
path.join('..');
// => ..
path.join('/');
// => \
path.join('D:/temp', '', 'foo/bar');
// => E:\temp\foo\bar
path.join('D:/temp', '.', 'foo/bar');
// => E:\temp\foo\bar
path.join('D:/temp', '..', 'foo/bar');
// => E:\foo\bar
path.join('D:/temp', '/', 'foo/bar');
// => E:\temp\foo\bar
path.join('/temp', '', 'foo/bar');
// => \temp\foo\bar
path.join('/temp', '.', 'foo/bar');
// => \temp\foo\bar
path.join('/temp', '..', 'foo/bar');
// => \foo\bar
path.join('/temp', '/', 'foo/bar');
// => \temp\foo\bar
path.join('temp', '', 'foo/bar');
// => temp\foo\bar
path.join('temp', '.', 'foo/bar');
// => temp\foo\bar
path.join('temp', '..', 'foo/bar');
// => foo\bar
path.join('temp', '/', 'foo/bar');
// => temp\foo\bar
path.join('temp', '', '/foo/bar');
// => temp\foo\bar
path.join('temp', '.', '/foo/bar');
// => temp\foo\bar
path.join('temp', '..', '/foo/bar');
// => foo\bar
path.join('temp', '/', '/foo/bar');
// => temp\foo\bar
path.resolve([...paths])
path.resolve();
// => e:\workspace\misc
path.resolve('');
// => e:\workspace\misc
path.resolve('.');
// => e:\workspace\misc
path.resolve('..');
// => e:\workspace
path.resolve('/');
// => e:\
path.resolve('D:/temp', '', 'foo/bar');
// => E:\temp\foo\bar
path.resolve('D:/temp', '.', 'foo/bar');
// => E:\temp\foo\bar
path.resolve('D:/temp', '..', 'foo/bar');
// => E:\foo\bar
path.resolve('D:/temp', '/', 'foo/bar');
// => E:\foo\bar
path.resolve('/temp', '', 'foo/bar');
// => e:\temp\foo\bar
path.resolve('/temp', '.', 'foo/bar');
// => e:\temp\foo\bar
path.resolve('/temp', '..', 'foo/bar');
// => e:\foo\bar
path.resolve('/temp', '/', 'foo/bar');
// => e:\foo\bar
path.resolve('temp', '', 'foo/bar');
// => e:\workspace\misc\temp\foo\bar
path.resolve('temp', '.', 'foo/bar');
// => e:\workspace\misc\temp\foo\bar
path.resolve('temp', '..', 'foo/bar');
// => e:\workspace\misc\foo\bar
path.resolve('temp', '/', 'foo/bar');
// => e:\foo\bar
path.resolve('temp', '', '/foo/bar');
// => e:\foo\bar
path.resolve('temp', '.', '/foo/bar');
// => e:\foo\bar
path.resolve('temp', '..', '/foo/bar');
// => e:\foo\bar
path.resolve('temp', '/', '/foo/bar');
// => e:\foo\bar
总结
相同点
- 两者都会解析相对路径片段。
- 两者都会使用平台路径分隔符标准化最终结果。
不同点
path.join([...paths])
方法默认返回.
;path.resolve([...paths])
默认返回${current-working-directory}
。path.join([...paths])
方法只是将路径片段连接起来;path.resolve([...paths])
方法除了连接路径片段之外,还会将最终结果解析为绝对路径。