2012-05-30 13 views
76

Qual è la differenza (se presente) tra path.normalize(your_path) e path.resolve(your_path)?Differenza tra path.normalize e path.resolve in Node.js

Lo so path.resolve(...) può accettare più argomenti, ma il comportamento con un singolo argomento è lo stesso della chiamata a path.normalize()?

EDIT: Se si suppone che si comportano allo stesso modo, non capisco lo scopo di esporre la funzione path.normalize(...) quando si può semplicemente passare il percorso in path.resolve(...) O, forse, è a scopo di documentazione. Ad esempio, si dice nella documentazione per path.resolve(...):

... Il percorso risultante è normalizzata, e ...

esposizione del path.normalize(...) rende più facile spiegare cosa significa "normalizzati"? ?? Non so.

risposta

164

path.normalize Elimina gli extra ., .., ecc. Nel percorso. path.resolve risolve un percorso in un percorso assoluto. Esempio (la mia directory di lavoro corrente era /Users/mtilley/src/testing):

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

In altre parole, path.normalize è "Qual è il percorso più breve che posso prendere che mi porterà nello stesso luogo come ingresso", mentre path.resolve è "Cosa è la mia destinazione se prendo questo percorso. "

+0

Bello. Grazie per la risposta! Questo mi ha infastidito per un po '. I documenti del Nodo, anche se in genere sono abbastanza carini, mi hanno lasciato un po 'perplesso su questo. – BMiner

+13

Si noti inoltre che path.normalize può gestire qualsiasi percorso che si desidera normalizzare e significa solo manipolazione delle stringhe del percorso, mentre path.resolve utilizzerà il filesystem e la directory corrente per risolvere il percorso verso un percorso assoluto. Ciò li rende piuttosto diversi in quanto path.normalize potrebbe essere usato su un percorso all'interno di un file tar, su un filesystem remoto o qualcosa di completamente astratto. – Nakedible

+0

In che cosa differiscono da path.join? – Vijey

4

Dalla documentazione:

Un altro modo di pensare di risolvere è come una sequenza di comandi cd in un guscio.

Collegamenti a path.resolve e path.normalize nella documentazione. Per lo più non voglio semplicemente fornire link in una risposta, ma i documenti Node.js sono molto decenti.

+0

Immagino di non capire lo scopo di esporre la funzione normalize (...) quando puoi semplicemente passare il percorso in path.resolve (...) – BMiner

+6

Il percorso che stai normalizzando potrebbe non esistere realmente nel filesystem, es potresti normalizzare un percorso per un file che stai per creare, oppure potresti normalizzare i percorsi degli URL relativi. – lanzz

+0

In realtà non so perché si dovrebbe usare anche la normalizzazione per risolvere. – Pickels