NodeJs中 path.resolve 和 path.join 区别

前言:

        初学 NodeJS的小伙伴一定会对 path.resolve 和 path.join 这两个输出路径的方法有迷惑,那我就给大家分享一下,这两个方法的区别吧。


Path.join

功能:

    path.join() 方法使用特定于平台的分隔符作为定界符将所有给定的 path 片段连接在一起,然后规范化生成的路径。

零长度的 path 片段被忽略。 如果连接的路径字符串是零长度字符串,则将返回 '.',表示当前工作目录。

        如果任何路径片段不是字符串,则抛出 TypeError

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

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

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

// .. 表示跳转到上一级目录继续拼接
// .  表示跳转到当前目录继续拼接

path.join('foo', {}, 'bar');
// 抛出 'TypeError: Path must be a string. Received {}'

总结:

        path.join 就是正常的从左到右拼接所有的路径(必须是字符串形式的路径),遇到 ..  或者 . 的时候需要特殊处理一下,跳转一下路径继续拼接即可。


Path.resolve

功能:

        方法将路径或路径片段的序列解析为绝对路径。

        如果在处理完所有给定的 path 片段之后,还没有生成绝对路径,则使用当前工作目录。

        生成的路径被规范化,并删除尾部斜杠(除非路径解析为根目录)。

        零长度的 path 片段被忽略。

        如果没有传入 path 片段,则 path.resolve() 将返回当前工作目录的绝对路径。

path.resolve('/foo/bar', './baz');
// 地址从右向左开始拼接,遇到 . 继续拼接上一段,直到拼接成一个路径停止
// 返回: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');
// 地址从右向左开始拼接, 当解析到 /tmp/file的时候已经是绝对路径了,就停止拼接
// 返回: '/tmp/file'

path.resolve('/static_files/png/', '../gif/image.gif');
// 地址从右向左开始拼接, 遇到 .. 继续拼接上一段路径,同时忽略上一段路径最后的文件夹名字
// 返回 '/static_files/gif/image.gif'


path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 地址从右向左开始拼接, 遇到 .. 继续拼接上一段路径,同时忽略上一段路径最后的文件夹名字
// 如果当前工作目录是 /home/myself/node,
// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'

总结:

        地址从右向左开始拼接,只要拼成绝对路径就立刻返回此路径!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

靖凡无所畏惧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值