node中 path.resolve 和path.join的区别

时间:2021-01-03 04:31:06
path.resolve('a','b','c')
返回a/b/c
path.resolve理论上总是以前一个路径作为基础路径,然后匹配当前路径,当前路径会有三种情况根目录(/),当前目录(./),上级目录(../)在进行匹配的时候,path.resolve会针对不同情况去处理不同的路径
比如
path.resolve('a/b/c','./d')
返回 a/b/c/d path.resolve('a/b/c','../d')
返回 a/b/d path.resolve('a/b/c','/d')
返回 d.
path.join
上面的代码把path.resolve换成path.join发现结果一样,本来以为没什么区别,后来发现path.join本来是把path.join里面的每一个path节点先用字符串加起来,然后再执行path.normalize,
path.normalize:
path.normalize是对路径的纠正处理,它主要做几件事情:
-如果路径为空,返回.,相当于当前的工作路径。
-将对路径中重复的路径分隔符(比如linux下的/)合并为一个。
-对路径中的. 、..进行处理。(类似于shell里的cd ..)
-如果路径最后有/,那么保留该/。