详解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 相关文章推荐
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
Feb 27 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
jQuery输入城市查看地图使用介绍
May 08 Javascript
javascript中var的重要性分析
Feb 11 Javascript
基于jquery实现全屏滚动效果
Nov 26 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 23 Javascript
Angular value与ngValue区别详解
Nov 27 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
Dec 04 Javascript
详解vue 中 scoped 样式作用域的规则
Sep 14 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
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
javaScript的函数对象的声明详解
2015/02/06 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
有趣的python小程序分享
2017/12/05 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Django保护敏感信息的方法示例
2019/05/09 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
Python如何实现爬取B站视频
2020/05/20 Python
python可以用哪些数据库
2020/06/22 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
Java语言的优势
2015/01/10 面试题
焊接专业毕业生求职信
2013/10/01 职场文书
高中毕业生个人自我鉴定
2013/11/24 职场文书
工地门卫岗位职责
2013/12/30 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
幸福中国演讲稿
2014/09/12 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
话题作文之呼唤
2019/12/18 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS