nodejs之path.join和path.resolve的区别

之前用node.js的path模块的时候,有点分不清path.join和path.resolve的区别,两个基本混合使用都没有问题。但喜欢刨根问底的我还是得一探究竟,一起来了解下这两者的区别吧。

首先从英文字面意思来简单的解释下

1、join

这个单词的中文意思是“连接”,在这里就是将不同的路径连接起来。

2、resolve

这个单词的中文意思是“解析”,在这里就是把给出的单个(多个路径的话先组合)解析成绝对路径。

下面来看看它们的完整含义

path.join([...paths])

  • ...paths:单个或多个路径
  • 返回值为合并后的路径

这个方法会把参数中给定的路径信息进行合并,然后返回使用平台相关的分隔符连接的路径;如果没有传递任何参数则返回‘.’,表示当前目录。

以下是给出一些例子帮助你理解

path.join('/ni','/hao','../a','..');
//输出:'\ni'

path.join('/ni',{},'/hao');
//错误

如果其中有一个参数不是字符串,该函数会抛出错误。

path.resolve([...paths])

  • ...paths: 单个或多个路径
  • 返回值为绝对路径

此函数会从右往左解析参数;如果不是根目录,路径的最后一个分隔符会被移除;如果没有传递任何参数则返回当前文件所在目录的绝对路径。

path.resolve('/ni/hao','./a');
//输出:'D:\ni\hao\a'

path.resolve('/ni/hao','/a/qin');
//输出:'D:\a\qin'

path.resolve('/ni/hao','../a/qin');
//输出:'D:\ni\a\qin'

如果其中有一个参数不是字符串,该函数会抛出错误。

通过简单的比较就很容易区分两者的区别了,下次使用的时候也就得心应手了。

发表评论