小编典典

path.resolve 和 path.join 有什么区别?

all

以下调用之间有什么区别吗?

path.join(__dirname, 'app')

对比

path.resolve(__dirname, 'app')

应该首选哪一个?


阅读 134

收藏
2022-04-24

共1个答案

小编典典

这两个函数处理以/非常不同的方式开始的段;join只会将它与前一个参数连接起来,但是resolve会将其视为根目录,并忽略所有先前的路径 -
将其视为cd使用每个参数执行的结果:

path.join('/a', '/b') // Outputs '/a/b'

path.resolve('/a', '/b') // Outputs '/b'

另一件需要注意的是,它path.resolve总是会产生一个绝对
URL,并将使用您的工作目录作为解析此路径的基础。但是__dirname无论如何,这是一条绝对路径,这在您的情况下并不重要。

至于你应该使用哪一个,答案是:这取决于你希望段开始的/行为方式——它们应该简单地加入还是应该充当新的根?

如果其他参数是硬编码的,那真的没关系,在这种情况下,您可能应该考虑(a)该行将来可能会如何变化以及(b)它与代码中的其他地方的一致性如何。

2022-04-24