详解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的一些看法
May 27 Javascript
Jquery插件写法笔记整理
Sep 06 Javascript
js常用自定义公共函数汇总
Jan 15 Javascript
JavaScript动态设置div的样式的方法
Dec 26 Javascript
使用plupload自定义参数实现多文件上传
Jul 19 Javascript
javascript数字验证的实例代码(推荐)
Aug 20 Javascript
EasyUI学习之DataGird分页显示数据
Dec 29 Javascript
javascript获取指定区间范围随机数的方法
Sep 08 Javascript
浅谈es6 javascript的map数据结构
Dec 14 Javascript
Vue组件化开发思考
Feb 02 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
Apr 26 Javascript
ssm+vue前后端分离框架整合实现(附源码)
Jul 08 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
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
js实现select下拉框选择
2020/01/11 Javascript
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
PyQt5实现简单的计算器
2020/05/30 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
学习标兵获奖感言
2014/02/20 职场文书
大学毕业生自我评价
2015/03/02 职场文书
长江七号观后感
2015/06/11 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python