详解Node.js中path模块的resolve()和join()方法的区别


Posted in Javascript onOctober 29, 2018

关于Node.js中path模块的resolve()和join()方法的比较,对照着总结看例子差不多以后在写模块的时候思路就能很清晰了

resolve

作用:path.resolve() 该方法将一些的 路径/路径段 解析为绝对路径。

语法:path.resolve([...paths])

说明:

  • ...paths <string> 一个路径或路径片段的序列
  • 如果没有传入 path 片段,或者path 片段长度为零(空字符),则 path.resolve() 会返回当前工作目录的绝对路径(相当于使用path.resolve(__dirname))

例子:我当前的工作路径为/workspace/demo

console.log(path.resolve())      // returns /workspace/demo
console.log(path.resolve(''))     // returns /workspace/demo
console.log(path.resolve(__dirname)) // returns /workspace/demo
console.log(path.resolve('/img/books', '/net'))  // returns '/net'
console.log(path.resolve('img/books', '/net'))  // returns '/net'
console.log(path.resolve('img/books', './net'))  // returns '/workspace/demo/img/books/net'
console.log(path.resolve('/img/books', './net'))  // returns '/img/books/net'
console.log(path.resolve('/img/books', 'net'))   // returns '/img/books/net'
console.log(path.resolve('/img/books', '../net'))     // returns '/img/net'
console.log(path.resolve('src','/img/books', '../net'))  // returns '/img/net'
console.log(path.resolve('src','./img/books', '../net'))  // returns '/workspace/demo/src/img/net'
console.log(path.resolve('src','img/books', '../net'))   // returns '/workspace/demo/src/img/net'

总结一下:从后向前,若字符以 / 开头,不会拼接到前面的路径;若以 ../ 开头,拼接前面的路径,但是不含前面一节的最后一层路径;若以 ./ 开头 或者没有符号 则拼接前面路径;

join

作用:path.join()方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。

语法:path.resolve([...paths])

说明:

  • ...paths <string> 一个路径或路径片段的序列
  • 长度为零的 path 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录

例子:

path.join('/img', 'book', 'net/abc', 'inter', '..'); // returns /img/book/net/abc
console.log(path.join('/img/books', '../net'))  // returns /img/net
console.log(path.join('img/books', '../net'))   // returns img/net
console.log(path.join('/img/books', './net'))   // returns /img/books/net
console.log(path.join('img/books', './net'))   // returns img/books/net
console.log(path.join('/img/books', 'net'))    // returns /img/books/net
console.log(path.join('img/books', 'net'))    // returns /img/books/net
console.log(path.join('/img/books', '/net'))   // returns /img/books/net
console.log(path.join('img/books', '/net'))    // returns img/books/net

总结一下 区别:join()只是拼接各个path片段,并不像resolve()一样除了拼接各个字段还拼接了工作目录的路径,其次如果以/开头的字符串片段在join并不像resolve一样是只返回自身,还有就是.. 同 ../是一个意思都代表上一级目录

两者区别:

1、join是把各个path片段连接在一起, resolve把‘/'当成根目录

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

2、join直接拼接字段,resolve解析路径并返回

path.join("a", "b1", "..", "b2")

console打印会得到"a/b2"

path.resolve("a", "b1", "..", "b2")

console打印得到"/home/myself/node/a/b2"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery异步循环获取功能实现代码
Sep 19 Javascript
return false,对阻止事件默认动作的一些测试代码
Nov 17 Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
javascript实现简易计算器的代码
May 31 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
微信小程序实现tab和swiper切换结合效果
Jul 17 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
Aug 18 Javascript
vue2.0 下拉框默认标题设置方法
Aug 22 Javascript
vue组件(全局,局部,动态加载组件)
Sep 02 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
Apr 08 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
JS获取表格视图所选行号的ids过程解析
Feb 21 Javascript
详解vue-router数据加载与缓存使用总结
Oct 29 #Javascript
vue mounted 调用两次的完美解决办法
Oct 29 #Javascript
Electron中实现大文件上传和断点续传功能
Oct 28 #Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
Oct 28 #Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
Oct 28 #Javascript
深入浅析javascript函数中with
Oct 28 #Javascript
微信小程序动画(Animation)的实现及执行步骤
Oct 28 #Javascript
You might like
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
PHP基本语法总结
2014/09/06 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
Javascript注入技巧
2007/06/22 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
javascript Array对象基础知识小结
2010/11/16 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
javascript简易画板开发
2020/04/12 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
python访问系统环境变量的方法
2015/04/29 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
python实发邮件实例详解
2019/11/11 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
python退出循环的方法
2020/06/18 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
环保建议书作文400字
2015/09/14 职场文书
趣味运动会口号
2015/12/24 职场文书
python中subplot大小的设置步骤
2021/06/28 Python
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js