详解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 相关文章推荐
Javascript中 关于prototype属性实现继承的原理图
Apr 16 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
JavaScript中创建对象的模式汇总
Apr 19 Javascript
Vue2组件tree实现无限级树形菜单
Mar 29 Javascript
BootStrap实现文件上传并带有进度条效果
Sep 11 Javascript
webpack构建react多页面应用详解
Sep 15 Javascript
基于Node.js模板引擎教程-jade速学与实战1
Sep 17 Javascript
angular6.0开发教程之如何安装angular6.0框架
Jun 29 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
Jan 09 Javascript
vue 进阶之实现父子组件间的传值
Apr 26 Javascript
JS如何实现动态添加的元素绑定事件
Nov 12 Javascript
jquery轮播图插件使用方法详解
Jul 31 jQuery
详解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接口和抽象类使用示例详解
2014/03/02 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
Javascript中的数学函数
2007/04/04 Javascript
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
python中defaultdict的用法详解
2017/06/07 Python
Python中with及contextlib的用法详解
2017/06/08 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
python实现linux下抓包并存库功能
2018/07/18 Python
python numpy存取文件的方式
2020/04/01 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
如何写python的配置文件
2020/06/07 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
中间件分为哪几类
2012/03/14 面试题
考试作弊被抓检讨书
2014/01/10 职场文书