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

新手上路,请多包涵

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

 path.join(__dirname, 'app')

对比

path.resolve(__dirname, 'app')

应该首选哪一个?

原文由 helpermethod 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 304
1 个回答

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

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

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

另一件需要注意的是 path.resolve 总是会产生一个绝对URL,并且会使用你的工作目录作为基础来解析这个路径。但是因为 __dirname 无论如何都是绝对路径,这对你来说并不重要。

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

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

原文由 Gorse horse 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题