Node 之 path模块中的join()与resolve() 彻底搞懂

本文详细介绍了Python内置的`path`模块中`join()`和`resolve()`两个方法的区别。`join()`主要用于连接多个路径片段,生成规范化路径,忽略空字符串,并保留尾部斜杠;而`resolve()`则从右到左处理路径,构造绝对路径,移除不必要的斜杠,并在未形成绝对路径时使用当前工作目录。通过实例演示,帮助理解两者在处理路径时的不同行为。
摘要由CSDN通过智能技术生成

path模块中的join()与resolve()的区别

path.join()

方法会将所有给定的 path 片段连接到一起(使用平台特定的分隔符作为定界符),然后规范化生成的路径
注意:

  1. 长度为零的 path 片段会被忽略。
  2. 如果连接后的路径字符串为长度为零的字符串,则返回 ‘.’,表示当前工作目录。
  3. 尾部的斜杠不会被删除

path.resolve()

方法会将路径或路径片段的序列解析为绝对路径
给定的路径序列会从右到左进行处理,后面的每个 path 会被追加到前面,直到构造出绝对路径

注意:

  1. 如果在处理完所有给定的 path 片段之后还未生成绝对路径,则会使用当前工作目录。
  2. 生成的路径会被规范化,
  3. 尾部的斜杠会被删除(除非路径被解析为根目录)。
  4. 零长度的 path 片段会被忽略。
  5. 如果没有传入 path 片段,则 path.resolve() 会返回当前工作目录的绝对路径。

关键点对比

joinresolve
规范化生成的路径规范化生成的路径
相对路径绝对路径
从左到右进行处理从右到左进行处理
所有path 片段连接到一起构造出绝对路径为止
长度为零的 path 片段会被忽略长度为零的 path 片段会被忽略
连接后的path长度为0,返回 当前目录连接后的path长度为0,返回 工作目录
尾部的斜杠不会被删除尾部的斜杠被删除

path.join() 示例说明

相对路径
所有给定的 path 片段连接到一起
规范化生成的路径

path.join('/目录1', '/目录2', '目录3'); // \目录1\目录2\目录3

长度为零的 path 片段会被忽略。

path.join('/目录1', '', '目录3'); // \目录1\目录3

如果连接后的路径字符串为长度为零的字符串,则返回 ‘.’,表示当前工作目录。

path.join('', '', ''); // .

path.resolve() 示例说明

绝对路径
从右到左进行处理,直到遇到根目录为止,构造出绝对路径
规范化生成的路径

path.resolve('/'); // D:\

从右到左进行处理,直到遇到根目录为止,构造出绝对路径
‘目录3’ 是绝对路径,包含根目录,

path.resolve('/目录1', '/目录2', '/目录3');  // D:\目录3

从右到左进行处理,直到遇到根目录为止,构造出绝对路径
‘目录3’ 不是绝对路径, ‘/目录2’ 中的 ‘/’ 代表根目录,是绝度路径

path.resolve('/目录1', '/目录2', '目录3');   // D:\目录2\目录3

如果在处理完所有给定的 path 片段之后还未生成绝对路径,则会使用当前工作目录。

path.resolve('目录1', '目录2', '目录3');  // D:\nodejs\api_learn\目录1\目录2\目录3

尾部的斜杠会被删除

path.resolve('/目录1', '目录2/'); // D:\目录1\目录2
path.join('/目录1', '目录2/'); // \目录1\目录2\

尾部的斜杠会被删除(除非路径被解析为根目录)

path.resolve('/目录1', '/'); // D:\

零长度的 path 片段会被忽略。

path.resolve('/目录1', '', '目录3'); // D:\目录1\目录3

如果没有传入 path 片段,则 path.resolve() 会返回当前工作目录的绝对路径。

path.resolve(); // D:\nodejs\api_learn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了 义

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值