《Node.js》path.resolve与path.join的区别与作用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

path 模块是node.js的一个用于处理文件和目录的路径的实用工具,使用前需先 const path = require(‘path’) 引入模块,而path.join()和path.resolve()是path模块两个常用的方法,下面我先简单介绍下他们的作用。

path.join():用于链接路径,并且会自动转换当前系统路径的分隔符"/“或”";

path.resolve():也是用于链接路径,但却和path.join()方法却很多不同,而且path.resolve()方法本身就自带一个to的绝对路径参数,也会自动转换分隔符,在某些场景用起来也方便很多;

__dirname:是node的一个全局变量,获得当前文件所在目录的完整目录名,搭配path一起使用;


一、path.resolve() 的使用

语法:path.resolve([from …], to)

1、使用步骤

代码如下(示例):

// 引入path模块
const path = require('path');
 
// 此处直接打印
console.log(path.resolve(__dirname));
console.log(path.resolve(__dirname,'a'));
console.log(path.resolve(__dirname,'/a'));
console.log(path.resolve('a','b',__dirname));
console.log(path.resolve(__dirname,'./a','b'));
console.log(path.resolve(__dirname,'/a','b'));
console.log(path.resolve(__dirname,'../a','b'));
console.log(path.resolve(__dirname,'a','../b'));
console.log(path.resolve('a','/b',__dirname));

// 输出:C:\XiaoLiang\path
// 输出:C:\XiaoLiang\path\a
// 输出:\a
// 输出:C:\XiaoLiang\path
// 输出:C:\XiaoLiang\path\a\b
// 输出:E:\a\b
// 输出:C:\XiaoLiang\a\b
// 输出:C:\XiaoLiang\path\b
// 输出:C:\XiaoLiang\path

2、总结

path.resolve(“./path”)的特性有以下几点:

  1. 从右往左读取"path"路径,并开始拼接,本身就自带绝对路径参数 “to” ;
  2. 当"path"路径为空时,则会直接获取当前文件所在的绝对路径;
  3. 当遇到字符以 ./ 开头或者没有字符,则正常拼接,所以可省略不加字符;
  4. 当遇到字符以 / 开头,则不会拼接到前面的路径并以自身所在盘为根路径加以拼接;
  5. 当遇到字符以 …/ 开头,则会将下一个要拼接"path"路径给覆盖,然后继续往左拼接;
  6. 搭配__dirname时,需将放置第一位,且与 ’ / ’ 有互相覆盖的冲突;

二、path.join() 的使用

语法:path.join([path1][, path2][, …])

1、使用步骤

代码如下(示例)

// 引入path模块
const path = require('path');
 
// 此处直接打印
console.log(path.join());
console.log(path.join(''));
console.log(path.join(__dirname));
// 输出:.
// 输出:.
// 输出:E:\Berlin-Case\path


 
// 此处直接打印
console.log(path.join(__dirname,'/a'));
console.log(path.join(__dirname,'./a'));
console.log(path.join(__dirname,'../'));
console.log(path.join(__dirname,'../a'));
console.log(path.join(__dirname,'../a','b'));
 
// 输出:E:\Berlin-Case\path\a
// 输出:E:\Berlin-Case\path\a
// 输出:E:\Berlin-Case\
// 输出:E:\Berlin-Case\a
// 输出:E:\Berlin-Case\a\b

2、总结

path.resolve(“./path”)的特性有以下几点:

  1. 在path.join()方法中,‘/’ 与 ‘./’ 一般情况下可以不用(特殊情况的拼接除外)
  2. 在path.join()方法中,最好与__dirname变量搭配使用;
  3. path.join()方法也是从右到左依次被解析排列组成路径的;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有趣的小良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值