详解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 相关文章推荐
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
在JavaScript中监听IME键盘输入事件
May 29 Javascript
jquery禁用右键单击功能屏蔽F5刷新
Mar 17 Javascript
jQuery插件开发的五种形态小结
Mar 04 Javascript
JavaScript检测字符串中是否含有html标签实现方法
Jul 01 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
JavaScript判断DIV内容是否为空的方法
Jan 29 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
Feb 05 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
Feb 19 Javascript
详谈js遍历集合(Array,Map,Set)
Apr 06 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
JS图片预加载三种实现方法解析
May 08 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
Python 字典与字符串的互转实例
2017/01/13 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
ipython和python区别详解
2019/06/26 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
详解django中Template语言
2020/02/22 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
美德好少年主要事迹
2014/01/29 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
慰问信格式规范
2015/03/23 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
微信早安问候语
2015/11/10 职场文书
节水宣传标语口号
2015/12/26 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
Python爬虫基础初探selenium
2021/05/31 Python
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
TypeScript 内置高级类型编程示例
2022/09/23 Javascript