详解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 multiSelect 多选下拉框
Jul 09 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
Apr 16 Javascript
基于jquery实现的树形菜单效果代码
Sep 06 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
详解Node全局变量global模块
Sep 28 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
详解js删除数组中的指定元素
Oct 31 Javascript
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
Vue组件基础用法详解
Feb 05 Javascript
避坑之 JavaScript 中的toFixed()和正则表达式
Apr 19 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 OPCode缓存 APC详细介绍
2010/10/12 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
js获取变量
2006/08/24 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
python与C互相调用的方法详解
2017/07/14 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
python 创建一维的0向量实例
2019/12/02 Python
基于Python的OCR实现示例
2020/04/03 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
浅谈Python中的字符串
2020/06/10 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
公司年会晚宴演讲稿
2014/01/06 职场文书
初一地理教学反思
2014/01/16 职场文书
机关财务管理制度
2014/01/17 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
2015年消防工作总结
2015/04/24 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技