详解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 相关文章推荐
彪哥1.1(智能表格)提供下载
Sep 07 Javascript
DOM相关内容速查手册
Feb 07 Javascript
JQueryEasyUI datagrid框架的基本使用
Apr 08 Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
Feb 12 Javascript
jquery实现最简单的滑动菜单效果代码
Sep 12 Javascript
实例讲解js验证表单项是否为空的方法
Jan 09 Javascript
jQuery插件passwordStrength密码强度指标详解
Jun 24 Javascript
jQuery事件用法详解
Oct 06 Javascript
JS表格组件神器bootstrap table使用指南详解
Apr 12 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
Jun 21 Javascript
vue-resource:jsonp请求百度搜索的接口示例
Nov 09 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(6) 面向对象
2010/02/16 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
python基础教程之循环介绍
2014/08/29 Python
Python中itertools模块用法详解
2014/09/25 Python
对python:print打印时加u的含义详解
2018/12/15 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
python 初始化一个定长的数组实例
2019/12/02 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
python 录制系统声音的示例
2020/12/21 Python
Ellos丹麦:时尚和服装在线
2016/09/19 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
北大研究生linux应用求职信
2013/10/29 职场文书
小学生学习感言
2014/03/10 职场文书
相亲活动方案
2014/08/26 职场文书
四风自我剖析材料
2014/09/30 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
高三复习计划
2015/01/19 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
HTML+JS实现在线朗读器
2022/02/15 Javascript