const absolutePath = path.join(__dirname, some, dir);
对比
const absolutePath = path.resolve(__dirname, some, dir);
path.join 将连接 __dirname,它是当前文件的目录名称,与 some 和 dir 的值与特定于平台的分隔符连接。
而
path.resolve 将处理 __dirname、some 和 dir,即从右到左处理它。
如果some 或dir 的任何值对应于根路径,则将省略前一个路径,并将其余路径视为根路径
为了更好地理解这个概念,让我更详细地解释一下:-
path.join和path.resolve是nodejs提供的path模块的两种不同的方法或功能。
两者都接受路径列表,但不同之处在于结果,即它们如何处理这些路径。
path.join 使用特定于平台的分隔符作为分隔符将所有给定的路径段连接在一起,然后规范化生成的路径。而path.resolve() 处理从右到左的路径序列,每个后续路径都在前面,直到构造出绝对路径。
未提供参数时
以下示例将帮助您清楚地理解这两个概念:-
我的文件名是index.js,当前工作目录是E:\MyFolder\Pjtz\node
const path = require('path');
console.log("path.join() : ", path.join());
// outputs .
console.log("path.resolve() : ", path.resolve());
// outputs current directory or equivalent to __dirname
结果
λ node index.js
path.join() : .
path.resolve() : E:\MyFolder\Pjtz\node
path.resolve() 方法将输出绝对路径,而 path.join() 返回。如果未提供任何内容,则表示当前工作目录
当某些根路径作为参数传递时
const path=require('path');
console.log("path.join() : " ,path.join('abc','/bcd'));
console.log("path.resolve() : ",path.resolve('abc','/bcd'));
结果我
λ node index.js
path.join() : abc\bcd
path.resolve() : E:\bcd
path.join() 仅将输入列表与特定于平台的分隔符连接起来,而 path.resolve() 处理从右到左的路径序列,每个后续路径都在前面,直到构造出绝对路径。