path.join 与 path.resolve 的区别

 

对比

举一个简单的例子

const path = require('path'); 

console.log(__dirname);                    
//D:\myProgram\test
let myPath = path.join(__dirname,'/img/so');         //D:\myProgram\test\img\so 
let myPath2
= path.join(__dirname,'./img/so');        //D:\myProgram\test\img\so
let myPath3
= path.resolve(__dirname,'/img/so');       //D:\img\so<br>
let myPath4
= path.resolve(__dirname,'./img/so');       //D:\myProgram\test\img\so


 

总结

path.join()方法可以连接任意多个路径字符串。要连接的多个路径可做为参数传入。

path.join()方法在接边路径的同时也会对路径进行规范化

 

path.resolve()方法可以将多个路径解析为一个规范化的绝对路径。其处理方式类似于对这些路径逐一进行cd操作,与cd操作不同的是,这引起路径可以是文件,并且可不必实际存在(resolve()方法不会利用底层的文件系统判断路径是否存在,而只是进行路径字符串操作)。

 

resolve的详解可以参考:

https://www.cnblogs.com/zytt/p/9038598.html

 

 

 

 

 

 

 

 

 

1. 对于以/开始的路径片段,path.join只是简单的将该路径片段进行拼接,而path.resolve将以/开始的路径片段作为根目录,在此之前的路径将会被丢弃,就像是在terminal中使用cd命令一样。

path.join('/a', '/b') // 'a/b'
path.resolve('/a', '/b') // '/b'

 

2. path.resolve总是返回一个以相对于当前的工作目录(working directory)的绝对路径。

path.join('./a', './b') // 'a/b'
path.resolve('./a', './b') // '/Users/username/Projects/webpack-demo/a/b'
posted @ 2019-01-14 19:26  为系归舟  阅读(316)  评论(0编辑  收藏  举报