详解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 相关文章推荐
js复制到剪切板的实例方法
Jun 28 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
Mar 04 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
理解JS绑定事件
Jan 19 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
Feb 21 Javascript
详解webpack2+React 实例demo
Sep 11 Javascript
js实现登录与注册界面
Nov 01 Javascript
vue使用axios时关于this的指向问题详解
Dec 22 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
Aug 03 Javascript
vue-model实现简易计算器
Aug 17 Javascript
vue 封装面包屑组件教程
Nov 16 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
详解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
apache配置虚拟主机的方法详解
2013/06/17 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
出国留学自荐信
2013/10/25 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
房产电话营销开场白
2015/05/29 职场文书
离婚民事起诉状
2015/08/03 职场文书
安全教育的主题班会
2015/08/13 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫