详解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 相关文章推荐
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
js获得网页背景色和字体色的方法
Mar 21 Javascript
详解JavaScript中undefined与null的区别
Mar 29 Javascript
jquery动态分页效果堪比时光网
Sep 25 Javascript
项目中常用的JS方法整理
Jan 30 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
Aug 18 Javascript
浅析$(function) ready和onload 的区别
Sep 03 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
Oct 13 Javascript
鼠标经过出现气泡框的简单实例
Mar 17 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 jQuery
JS基于for语句编写的九九乘法表示例
Jan 04 Javascript
javascript标准库(js的标准内置对象)总结
May 26 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邮件专题
2006/10/09 PHP
php上传、管理照片示例
2006/10/09 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
2010/11/25 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
python实现划词翻译
2020/04/23 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
python使用RNN实现文本分类
2018/05/24 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
python程序如何进行保存
2020/07/03 Python
Python configparser模块应用过程解析
2020/08/14 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
政治学专业毕业生求职信
2014/08/11 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL