详解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 ui dialog里调用datepicker的问题
Aug 06 Javascript
Dom 是什么的详细说明
Oct 25 Javascript
jQuery阻止冒泡和HTML默认操作
Nov 17 Javascript
jQuery基础框架浅入剖析
Dec 27 Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
[js高手之路]原型式继承与寄生式继承详解
Aug 28 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
详解Nuxt.js Vue服务端渲染摸索
Feb 08 Javascript
javascript、php关键字搜索函数的使用方法
May 29 Javascript
vue elementUI table 自定义表头和行合并的实例代码
May 22 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 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和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
php实现aes加密类分享
2014/02/16 PHP
php数组去除空值函数分享
2015/02/02 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
Python将QQ聊天记录生成词云的示例代码
2021/02/10 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
家具厂厂长岗位职责
2014/01/01 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
交通安全标语
2014/06/06 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
合同审查法律意见书
2015/06/04 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python
netty 实现tomcat的示例代码
2022/06/05 Servers