Różnica między ścieżką.normalizacja i ścieżka.rozwiń w węźle.js

Jaka jest różnica (jeśli istnieje) między path.normalize(your_path) a path.resolve(your_path)?

Wiem, że path.resolve(...) może przyjmować wiele argumentów, ale czy zachowanie z jednym argumentem jest takie samo jak wywołanie path.normalize()?

EDIT: Jeśli mają zachowywać się w ten sam sposób, nie rozumiem celu ujawniania funkcji path.normalize(...), Kiedy można po prostu przekazać ścieżkę do path.resolve(...) lub, być może, jest to dla celów dokumentacyjnych. Na przykład w dokumentacji dla path.resolve(...) mówią:

... Na ścieżka wynikowa jest znormalizowana, oraz ...

Ujawnienie path.normalize(...) ułatwia wyjaśnienie, co oznacza "znormalizowany"??? Nie wiem.

Author: BMiner, 2012-05-30

2 answers

path.normalize pozbywa się dodatkowych ., .., itd. na ścieżce. path.resolve rozwiązuje ścieżkę na ścieżkę absolutną. Przykład (mój aktualny katalog roboczy był /Users/mtilley/src/testing):

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

Innymi słowy, path.normalize jest "jaka jest najkrótsza ścieżka, którą mogę przejść, która zaprowadzi mnie do tego samego miejsca co wejście", podczas gdy path.resolve jest "jaki jest mój cel, jeśli pójdę tą ścieżką."

Zauważ jednak, że path.normalize()jest dużo bardziej niezależne od kontekstu niż path.resolve(). Had path.normalize() been context- de pendent (np. gdyby wziął pod uwagę bieżący katalog roboczy), wynik w powyższym przykładzie byłby ../node, ponieważ jest to najkrótsza ścieżka, którą można by przejść od /Users/mtilley/src/testing do /Users/mtilley/src/node.

Jak na ironię, oznacza to, że path.resolve() tworzy ścieżkę względną w wartościach bezwzględnych (można ją wykonać w dowolnym miejscu i da to ten sam wynik), podczas gdy path.normalize() tworzy ścieżkę bezwzględną w wartościach względnych (należy ją wykonać w ścieżce względnej, dla której chcemy obliczyć wartość). wynik bezwzględny).

 168
Author: Michelle Tilley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-30 20:26:19

From the docs:

Innym sposobem myślenia o resolve jest sekwencja poleceń cd w powłoce.

Linki do ścieżki.rozwiąż i ścieżkę.normalizacji w dokumentacji. W większości nie chcę tylko podawać linków w odpowiedzi, ale węzeł.dokumenty js są bardzo przyzwoite.

 4
Author: Pickels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-30 21:09:13