详解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 相关文章推荐
DOMAssitant最新版 DOMAssistant 2.5发布
Dec 25 Javascript
js 中 document.createEvent的用法
Aug 29 Javascript
基本jquery的控制tabs打开的数量的代码
Oct 17 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
Sep 19 Javascript
javaScript arguments 对象使用介绍
Oct 18 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
Aug 31 Javascript
微信、QQ、微博、Safari中使用js唤起App
Jan 24 Javascript
Vue 自定义动态组件实例详解
Mar 28 Javascript
详解React中合并单元格的正确写法
Jan 08 Javascript
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
php数组和链表的区别总结
2019/09/20 PHP
Javascript 面向对象特性
2009/12/28 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
Python设计模式之代理模式实例
2014/04/26 Python
Python中的列表知识点汇总
2015/04/14 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
Noon埃及:埃及在线购物
2019/11/26 全球购物
护士上岗前培训自我鉴定
2014/04/20 职场文书
设计大赛策划方案
2014/06/13 职场文书
绿色出行口号
2014/06/18 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
幼师小班个人总结
2015/02/12 职场文书
2015最新民情日记范文
2015/06/26 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android