前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node的 path.resolve 和 path.join 的区别

Node的 path.resolve 和 path.join 的区别

作者头像
小小杨
发布2021-10-13 10:45:35
2.2K0
发布2021-10-13 10:45:35
举报
文章被收录于专栏:下落木下落木

一、区别

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

二、path.join()

  1. path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。
  2. 长度为零的 path 片段会被忽略。如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。
  3. 注意:如果路径中出现"..",那么它前面的路径片段将被丢失。

“平台特定的分隔符”:

  1. windows下文件路径分隔符使用的是"\"
  2. Linux下文件路径分隔符使用的是"/"

比如:

代码语言:javascript
复制
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');  // 返回: '/foo/bar/baz/asdf'

三、path.resolve()

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

举例:

代码语言:javascript
复制
代码语言:javascript
复制
path.resolve('/foo/bar', './baz');
// 返回: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');
// 返回: '/tmp/file'
// 如果是path.join的话,就会返回/foo/bar/tmp/file

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 如果当前工作目录为 /home/myself/node,
// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 下落木 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、区别
  • 二、path.join()
  • 三、path.resolve()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档