89

path.normalize(your_path)との違いは何path.resolve(your_path)ですか?

複数の引数を受け入れることができることは知ってpath.resolve(...)いますが、引数が 1 つの場合の動作は呼び出しと同じ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

ドキュメントから:

解決を考える別の方法は、シェル内の一連の cd コマンドです。

ドキュメント内のpath.resolvepath.normalizeへのリンク。私はほとんどの場合、回答にリンクを提供したくありませんが、Node.js ドキュメントは非常に適切です。

于 2012-05-30T19:28:55.537 に答える