之前用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'
如果其中有一个参数不是字符串,该函数会抛出错误。
通过简单的比较就很容易区分两者的区别了,下次使用的时候也就得心应手了。