path.join()与path.resolve()区别

本文讲述了在Webpack配置中,path.join用于路径拼接,使用特定分隔符规范化,而path.resolve则解析路径片段生成绝对路径,介绍了它们的区别和用法实例。理解这两个函数的关键在于它们的解析规则和作用范围。
摘要由CSDN通过智能技术生成

在做webpack配置时候,以为两者都是进行路径拼接,没进行区别,所以特开此贴记录收获

path.join定义

path.join(path1, path2, ...)

将path路段使用特定分隔符进行拼接(window中是使用“\”),并规范化生成的路径。

// 引入node自带 路径拼接 模块
const path = require('path')

// __dirname 是当前执行的程序所在的目录文件夹的绝对路径
// 当前的工作目录是 E:\join&&resolve
let myPath1 = path.join(__dirname,'/a/b');
let myPath2 = path.join('a', 'b', 'c', 'd/e');

console.log(myPath1); // E:\join&&resolve\a\b
console.log(myPath2); // a\b\c\d\e

path.resolve定义

path.resolve([from...],to)

将路径或路径片段的序列解析为绝对路径(我也是在这里看不懂说啥)

直接上代码演示会更好理解,下面是我总结出来的规律

Tip

  1. /会被解析为根目录(盘符号)

  2. 从最后一个参数开始,如果参数是以/开头,则停止解析(斜号在中间不会影响)无论前面是否还有参数

  3. 假如直到解析到第一个参数仍然没有遇到以斜杠开头的,则直接拼接到当前工作目录(E:\join&&resolve)

  4. 如果遇到./开头,代表是相对路径,还需要向前拼接

  5. 如果遇到 ../ 开头,解析之后返回的是路径就是的上一级(看代码理解)

const path = require('path')

// 一定要从右往左看!至于为啥,我也没搞明白(哭泣)
console.log(path.resolve(__dirname,'a'))    // E:\join&&resolve\a
console.log(path.resolve(__dirname,'/a'))   // E:\a
console.log(path.resolve('a','b')) 			// E:\join&&resolve\a\b

console.log(path.resolve('/a','b'))         // E:\a\b
console.log(path.resolve('/a/b','c'))  		// E:\a\b\c
console.log(path.resolve('a','/b'))    		// E:\b
 
console.log(path.resolve('/a','./b'))   	// E:\a\b
console.log(path.resolve('./a','./b'))		// E:\join&&resolve\a\b

console.log(path.resolve('/a/b','../c')) 	// E:\a\c
console.log(path.resolve('/a','../c')) 		// E:\c
console.log(path.resolve('a/b','../c')) 	// E:\join&&resolve\a\c
console.log(path.resolve('../c')) 			// E:\c

总结

path.resolve只能掌握到使用规律,惭愧。。。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值