详解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 选择器、DOM操作、事件、动画
Nov 25 Javascript
如何用ajax来创建一个XMLHttpRequest对象
Dec 10 Javascript
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
JS/Jquery判断对象为空的方法
Jun 11 Javascript
详解AngularJS如何实现跨域请求
Aug 22 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
Jun 16 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
Jan 08 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
Vue组件库发布到npm详解
Feb 17 Javascript
javascript设计模式之装饰者模式
Jan 30 Javascript
详解小程序横屏方案对比
Jun 28 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
分享php分页的功能模块
2015/06/16 PHP
javascript 必知必会之closure
2009/09/21 Javascript
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
python转换摩斯密码示例
2014/02/16 Python
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
python如何求解两数的最大公约数
2018/09/27 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
初中女生自我鉴定
2013/12/19 职场文书
党员干部承诺书范文
2014/03/25 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
公司授权委托书范本
2014/09/18 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
机关保密工作承诺书
2015/05/04 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
Python anaconda安装库命令详解
2021/10/16 Python