详解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 相关文章推荐
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
jquery JSON的解析方式示例介绍
Jul 27 Javascript
javascript中setAttribute兼容性用法分析
Dec 12 Javascript
JavaScript requestAnimationFrame动画详解
Sep 14 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
vue 自定义提示框(Toast)组件的实现代码
Aug 17 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 Javascript
layui动态渲染生成select的option值方法
Sep 23 Javascript
JavaScript 面向对象基础简单示例
Oct 02 Javascript
微信小程序实现点击图片放大预览
Oct 21 Javascript
js实现点赞效果
Mar 16 Javascript
微信小程序tab左右滑动切换功能的实现代码
Feb 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
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
python备份文件的脚本
2008/08/11 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
python for和else语句趣谈
2019/07/02 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
超市营业员岗位职责
2013/12/20 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
学历公证委托书
2014/04/09 职场文书
个人委托书范本
2014/09/13 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
话题作文之成长
2019/12/09 职场文书
nginx优化的六点方法
2021/03/31 Servers
Consul在linux环境的集群部署
2022/04/08 Servers
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android