详解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插件开发详细教程
Jun 06 Javascript
PHP 数组current和next用法分享
Mar 05 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
Mar 31 Javascript
如何屏蔽防止别的网站嵌入框架代码
Aug 24 Javascript
详解JS中Array对象扩展与String对象扩展
Jan 07 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
Aug 16 Javascript
详解jQuery中ajax.load()方法
Jan 25 Javascript
详解angular部署到iis出现404解决方案
Aug 14 Javascript
一步步教你利用Docker设置Node.js
Nov 20 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 Javascript
vue-loader中引入模板预处理器的实现
Sep 04 Javascript
Moment的feature导致线上bug解决分析
Sep 23 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
JS 网站性能优化笔记
2011/05/24 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
json跟xml的对比分析
2008/06/10 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
常用python数据类型转换函数总结
2014/03/11 Python
python数据处理实战(必看篇)
2017/06/11 Python
Python引用计数操作示例
2018/08/23 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
python爬取代理ip的示例
2020/12/18 Python
python 实现的车牌识别项目
2021/01/25 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
中专自荐信
2013/10/13 职场文书
自我检讨书范文
2015/01/28 职场文书