前言
之前觉得很简单没有记录,果不其然,忘了,还是浅记一下path.resolve与path.join如何使用,毕竟文件中各种乱七八糟的路径位置一直都容易让人混乱。
path.resolve
无参数时
-
path.resolve()
可以得到当前工作路径,也就是编写path.resolve()
代码的js文件所在位置。 -
CommonJS模块可以通过
__dirname
获得相同值,也是当前工作路径位置。 -
ES6模块不支持
__dirname
,因此ES6使用__dirname
得先声明。import path from 'path' const __dirame = path.resolve()
有参数时
- 看成从当前路径开始执行cd操作,且跳转目录允许不存在。
- 假设我文件当前路径开始为C:\Users\user\Desktop。
- 在C:\Users\user\Desktop上执行
cd /
跳转绝对路径会回到c盘上,也就是根目录。console.log(path.resolve('/'))// C:\
- 在C:\Users\user\Desktop上执行
cd /
会回到c盘C:\
上,再执行cd /test
又是绝对路径会到C:\test
,最后执行cd /path
还是绝对路径结果为C:\path
,我们发现只要是绝对路径,前面的跳转就没什么意义了,path.resolve('/','/test','/path')
等同于path.resolve('/path')
,以后我们可以从最后一个绝对路径开始看,前面直接忽略。console.log(path.resolve('/','/test','/path'))// C:\path
- 在C:\Users\user\Desktop上执行
cd test
会到C:\Users\user\Desktop\test
,再执行cd path
又会到C:\Users\user\Desktop\test\path
,注意:即使test、path文件夹不存在,返回的仍然是这个。console.log(path.resolve('test','path'))// C:\Users\user\Desktop\test\path
path.join
- path.join只是返回字符串路径的拼接,只会拼接出看起来规范合理的路径,因此结合两个字符串时,下面三种情况结果都一样。
console.log(path.join('/test','./path'))// \test\path console.log(path.join('/test','/path'))// \test\path console.log(path.join('/test','path'))// \test\path
- 个人认为path.join没有很合理容易揣摩的规则,多种情况结果一致容易产生误解,因此更建议使用
path.resolve
。
尾言
如果觉得文章还不错的话,欢迎点赞收藏哦,感谢,最后封面壁纸送上~