nodejs中path.join和path.resolve的对比,聊聊它们的区别

本篇文章带大家了解一下nodejs中的path.join和path.resolve,介绍一下path.join和path.resolve的区别,希望对大家有所帮助!

相信小伙伴们都对这两个方法path.joinpath.resolve不陌生,在我们写node或者配置webpack的时候都用过该方法。比如下面这段:

output: {
   path: Path.join(__dirname, dist),
   filename: [name]_[chunkhash:8].js
}

但是你知道这两个的区别吗。今天笔者就来讲一下二者区别及用法。

先说一下,path为我们node中的一个内置模块,这两个方法都是path模块下提供的。

Path.resolve

1.png

不废话,先上图。我们可以看到resolve方法接收无限的参数且都是string类型的,该方法返回值也是string类型的(是一个路径)。

栗子:

// 这里我们就当__dirname是 /root

path.resolve(__dirname, ./dist) // 输出:/root/dist

path.resolve(__dirname, dist, dir) // 输出:/root/dist/dir

path.resolve(__dirname, /dist) // 输出:/dist

path.resolve(__dirname, /dist, ../) // 输出:你的磁盘根目录

path.resolve(__dirname, /dist, ..) // 输出:你的磁盘根目录

path.resolve(__dirname, /dist, .., /test) // 输出:/test

path.resolve(__dirname, dist, dir, /test) // 输出:/test

path.resolve(__dirname, dist, null, /test) // 输出:报错,参数一定要字符串类型的!

通过上面栗子我们可以看到,参数可以任意,返回值是一个路径(string类型)。然而上面的结果是当我们的参数里面遇见/就是根路径的时候,这时返回值路径会发生极大改变,变化为:以最后一次出现/根路径的值为当前路径的开始。

Path.join

2.png

join方法跟resolve方法一样,接收无限的参数,返回值也是string类型。join顾名思义就是拼接意思。我们来看一下join的用法吧

栗子:

// 这里我们就当__dirname是 /root

path.join(__dirname, dist) // 输出:/root/dist

path.join(__dirname, dist, /dir) // 输出:/root/dist/dir

path.join(__dirname, dist, /dir, ..) // 输出:/root/dist

path.join(__dirname, dist, /dir, ../test) // 输出:/root/dist/test

path.join(__dirname, dist, /dir, /..test) // 输出:/root/dist/dir/..test

path.join(__dirname, /dist, ..) // 输出:/root

通过上面栗子我们可以看到join方法只是拼接路径,也不会像resolve那样遇见/根就直接把整个路径替换跳,而只有在标准的..../相对路径的时候跳出目录。

二者区别

通过上面的两个栗子,我相信你可以总结出二者的区别在哪里了。说白了就是resolve方法是对根路径的而直接变化的,而join方法只会将所有参数拼接,最后形成一个完整的路径(当然遇见..or../会跳出当前目录)。

这个在实际开发中配置还是用到的地方很多的,有时候我们写字符串../src/index.html不生效时,就可以试试resove or join哦。

完!就分享到这吧,希望可以对大家涨一点小知识,如有帮助请帮该文章点个赞和在看吧,让更多的人看到

更多node相关知识,请访问:nodejs 教程!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)