89

path.normalize(your_path)和之间有什么区别(如果有的话)path.resolve(your_path)

我知道path.resolve(...)可以接受多个参数,但是单个参数的行为与调用相同path.normalize()吗?

编辑:如果它们应该以相同的方式运行,那么path.normalize(...)当您可以简单地将路径传递给时,我不明白公开函数的目的,path.resolve(...)或者,也许它是出于文档目的。例如,他们在文档中说path.resolve(...)

...生成的路径被规范化,并且...

暴露path.normalize(...)可以更容易地解释“规范化”是什么意思?我不知道。

4

2 回答 2

189

path.normalize摆脱路径中多余的.,..等。path.resolve将路径解析为绝对路径。示例(我当前的工作目录是/Users/mtilley/src/testing):

> path.normalize('../../src/../src/node')
'../../src/node'
> path.resolve('../../src/../src/node')
'/Users/mtilley/src/node'

换句话说,path.normalize是“我能走的最短路径是什么,它将把我带到与输入相同的地方”,path.resolve而是“如果我走这条路,我的目的地是什么”。

但是请注意,path.normalize()比. 已经依赖于上下文即,如果它考虑了当前工作目录),上面示例中的结果将是,因为这是从到的最短路径。path.resolve()path.normalize()../node/Users/mtilley/src/testing/Users/mtilley/src/node

具有讽刺意味的是,这意味着path.resolve()产生一个绝对路径的相对路径(你可以在任何地方执行它,它会产生相同的结果),而path.normalize()产生一个相对路径的绝对路径(你必须在你想要的相对路径中执行它计算绝对结果)。

于 2012-05-30T20:34:47.520 回答
1

从文档:

将resolve 理解为shell 中的一系列cd 命令的另一种方式。

文档中指向path.resolvepath.normalize的链接。我主要不想在答案中提供链接,但 Node.js 文档非常不错。

于 2012-05-30T19:28:55.537 回答