详解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 相关文章推荐
一个tab标签切换效果代码
Mar 27 Javascript
基本jquery的控制tabs打开的数量的代码
Oct 17 Javascript
关于JavaScript的面向对象和继承有利新手学习
Jan 11 Javascript
JS实现选项卡实例详解
Nov 17 Javascript
java必学必会之static关键字
Dec 03 Javascript
jQuery中的siblings用法实例分析
Dec 24 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
Oct 25 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
原生JS实现多个小球碰撞反弹效果示例
Jan 31 Javascript
vue实现抖音时间转盘
Sep 08 Javascript
React+Redux实现简单的待办事项列表ToDoList
Sep 29 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
Oct 29 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
php日期操作技巧小结
2016/06/25 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
Ionic快速安装教程
2016/06/03 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
python 字符串split的用法分享
2013/03/23 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
python中的常量和变量代码详解
2018/07/25 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
大学优秀班集体申报材料
2014/05/23 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
房产证明范本
2015/06/19 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
解决golang 关于全局变量的坑
2021/05/06 Golang
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android