Разница между путями.нормализовать и путь.разрешить в узле.js


в чем разница (если есть) между path.normalize(your_path) и path.resolve(your_path)?

Я знаю path.resolve(...) может принимать несколько аргументов, но является ли поведение с одним аргументом таким же, как вызов path.normalize()?

EDIT: если они должны вести себя так же, я не понимаю цель разоблачение path.normalize(...) функция, когда вы можете просто передать путь в path.resolve(...) или, может быть, это для целей документации. Например, говорят в документации ибо path.resolve(...):

... Полученный путь нормализуется, И...

разоблачение path.normalize(...) облегчает объяснение того, что означает" нормализованный"??? Я не знаю.

2 79

2 ответа:

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() был контекст- dependent (т. е. если бы он учитывал текущий рабочий каталог), результат в приведенном выше примере был бы ../node, потому что это самый короткий путь, который можно было бы взять от /Users/mtilley/src/testing до /Users/mtilley/src/node.

как ни странно, это означает, что path.resolve() создает относительный путь в абсолютных терминах (вы можете выполнить его в любом месте, и он даст тот же результат), тогда как path.normalize() производит абсолютный путь в относительный условия (вы должны выполнить его в пути, относительно которого вы хотите вычислить абсолютный результат).

документы:

другой способ думать о разрешении - это последовательность команд cd в оболочке.

ссылки путь.решите и путь.нормализовать в документации. Я в основном не хочу просто предоставлять ссылки в ответе, но узел.JS docs очень приличные.