是的,这些功能之间存在差异,但在这种情况下使用它们的方式将导致相同的结果。
path.join
通过将两条路径合并在一起返回标准化路径。它可以返回绝对路径,但并不一定总是这样做。
例如:
path.join('app/libs/oauth', '/../ssl')
决心app/libs/ssl
path.resolve
另一方面,将解析为绝对路径。
例如,当您运行:
path.resolve('bar', '/foo');
返回的路径将是/foo
因为这是可以构建的第一个绝对路径。
但是,如果您运行:
path.resolve('/bar/bae', '/foo', 'test');
返回的路径将是/foo/test
再次因为这是可以从右到左形成的第一个绝对路径。
如果您不提供指定根目录的路径,则指定给的路径resolve
函数被附加到当前工作目录。所以如果你的工作目录是/home/mark/project/
:
path.resolve('test', 'directory', '../back');
决心
/home/mark/project/test/back
Using __dirname
是包含源文件的目录的绝对路径。当你使用path.resolve
or path.join
如果您遵循相同的路径,它们将返回相同的结果__dirname
。在这种情况下,这实际上只是一个偏好问题。