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