当您的整个路径是静态的时,例如在您的 myPath = 'directory/file' 示例中,据我所知,没有明显的优势。
但是,如果您要动态构建路径,path.join 等是必不可少的。
一个重要的原因是,与字符串连接不同,path.join 等人会在其中一个参数不是字符串时防止意外行为。
在 JavaScript 中,与值为 undefined 相关的错误很常见。假设您的应用中有一些代码在用户登录后将用户重定向到他们的个人资料:
if (success) {
res.redirect(`/users/${params.username}`);
}
看起来不错,对吧?没那么快。事实证明,用户名属性实际上是params.userName,因此您将每个用户重定向到/users/undefined。不会引发错误,并且您的单元测试不会检查重定向 URL,因此会部署此错误。
如果你这样做了:
res.redirect(path.join('/users', params.username));
...它会立即引发 ArgumentError 错误,您的单元测试将失败,并且永远不会部署错误。
这是一个幼稚的例子吗?是的。检查undefined 容易吗?是的。但是当您养成使用path.join 的习惯时,您就不必担心这一点。您至少知道,您永远不会在您的路径中意外地以undefined 或null 或123 结束。
在服务器端更为重要。假设您有一个处理文件上传的应用程序,并且您希望用户的上传文件进入一个以用户名作为名称的目录:
fs.mkdir(`images/${params.username}`, err => {
if (err) { throw new Error('Oops!'); }
fs.writeFile(`images/${params.username}/${params.filename}`, params.filedata, /* ... */);
});
现在您已将每个用户的上传内容写入images/undefined。可能需要很长时间(在商业术语中)才会有人注意到这个错误。