以下调用之间有什么区别吗?
path.join(__dirname, 'app')
对比
path.resolve(__dirname, 'app')
应该首选哪一个?
这两个函数处理以/非常不同的方式开始的段;join只会将它与前一个参数连接起来,但是resolve会将其视为根目录,并忽略所有先前的路径 - 将其视为cd使用每个参数执行的结果:
/
join
resolve
cd
path.join('/a', '/b') // Outputs '/a/b' path.resolve('/a', '/b') // Outputs '/b'
另一件需要注意的是,它path.resolve总是会产生一个绝对 URL,并将使用您的工作目录作为解析此路径的基础。但是__dirname无论如何,这是一条绝对路径,这在您的情况下并不重要。
path.resolve
__dirname
至于你应该使用哪一个,答案是:这取决于你希望段开始的/行为方式——它们应该简单地加入还是应该充当新的根?
如果其他参数是硬编码的,那真的没关系,在这种情况下,您可能应该考虑(a)该行将来可能会如何变化以及(b)它与代码中的其他地方的一致性如何。