博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node模块之path——path.join和path.resolve的区别
阅读量:7105 次
发布时间:2019-06-28

本文共 1344 字,大约阅读时间需要 4 分钟。

1.path.join([...paths])

path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。长度为零的 path 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。

以上是nodejs官方文档上的描述。我们可以抓取几个关键字,“平台特定的分隔符”、“path片段”, “规范化”。

“平台特定的分隔符”:

  windows下文件路径分隔符使用的是"\"

  Linux下文件路径分隔符使用的是"/"

“path片段”:即是说,该方法接收的是多个路径的部分或全部,然后简单将其拼接。

“规范化”:顾名思义,如果你给出的路径片段中任一路径片段不是一个字符串,则抛出TypeError。

我们来举个例子:

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');// 返回: '/foo/bar/baz/asdf'

这里需要注意:如果路径中出现"..",那么它前面的路径片段将被丢失。

2.path.resolve([from....],to)

path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz。如果处理完全部给定的 path 片段后还未生成一个绝对路径,则当前工作目录会被用上。生成的路径是规范化后的,且末尾的斜杠会被删除,除非路径被解析为根目录。长度为零的 path 片段会被忽略。如果没有传入 path 片段,则 path.resolve() 会返回当前工作目录的绝对路径。

以上是nodejs官方文档上的描述。

简单来说,其处理方式类似于对这些路径逐一进行cd操作,与cd操作不同的是,这些引起来的路径可以是文件,并且可以不必实际存在(resolve()方法不会利用底层的文件系统判断路径是否存在,而只是进行路径字符串操作)。

举个例子:

path.resolve('/foo/bar', './baz');// 返回: '/foo/bar/baz'path.resolve('/foo/bar', '/tmp/file/');// 返回: '/tmp/file'path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');// 如果当前工作目录为 /home/myself/node,// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'

总结一下:path.join只是简单的将路径片段进行拼接,并规范化生成一个路径,而path.resolve则一定会生成一个绝对路径,相当于执行cd操作。

转载于:https://www.cnblogs.com/zyl-Tara/p/9765673.html

你可能感兴趣的文章
ECMAScript with 语句
查看>>
input输入框记录快捷键组合
查看>>
oracle积累
查看>>
JavaBean的另一种写法及其ruby版代码生成器
查看>>
Tsar 淘宝内部大量使用的系统监控工具
查看>>
MJRefresh 的运用 上拉刷新和下拉刷新
查看>>
一直想写点什么
查看>>
Io 语言入门
查看>>
Mysql常用命令
查看>>
maven servlet上传文件
查看>>
Query对象和DOM对象使用说明
查看>>
VC 多线程编程
查看>>
Ubuntu11.10下安装VMwareTools步骤
查看>>
Windows 套接字详解、 值,和的含义
查看>>
mysql查询分组之后获取结果集总数
查看>>
转Struts2内核之我见
查看>>
不需要权限的获取蓝牙mac地址方法
查看>>
NSRunLoop详解
查看>>
Oracle常用傻瓜问题1000问
查看>>
李斌--Linux下程序编译与运行
查看>>