comme tout le monde sait que Windows fait des chemins avec des barres obliques inverses où Unix fait des chemins avec des barres obliques. node.js fournit path.join()
de toujours utiliser la barre oblique correcte. Ainsi, par exemple, au lieu d'écrire uniquement Unix, 'a/b/c'
vous le feriez à la path.join('a','b','c')
place.
Cependant, il semble que malgré cette différence, si vous ne normalisez pas vos chemins (par exemple en utilisant path.join) et écrivez simplement des chemins comme a/b/c
node.js, vous n'aurez aucun problème à exécuter vos scripts sous Windows.
Alors , est - il un avantage par rapport écrit path.join('a','b','c')
sur 'a/b/c'
? Les deux semblent fonctionner quelle que soit la plate-forme ...
path.join
prendra soin des délimiteurs inutiles, qui peuvent se produire si les chemins donnés proviennent de sources inconnues (par exemple, entrée utilisateur, API tierces, etc.).Donc
path.join('a/','b')
path.join('a/','/b')
,path.join('a','b')
etpath.join('a','/b')
tous donneronta/b
.Sans l'utiliser, vous vous attendez généralement au début et à la fin des chemins joints, sachant qu'ils n'ont qu'une seule barre oblique.
la source
J'utilise
path.join
pour m'assurer que les séparateurs de dossiers sont aux bons endroits, pas nécessairement pour m'assurer qu'il utilise des barres obliques avant et arrière. Par exemple:Insérera correctement le séparateur entre www et test
/var/www/test
la source
path.join
serait dans votre autre réponse ici stackoverflow.com/questions/9027648/… . Cette réponse m'a conduit ici à une autre question à laquelle vous avez répondu :)return baseDir + relativePath + filename;
. Je l'ai tout de suite remplacé parreturn path.join(baseDir, relativePath, filename);
. C'est en effet très utile!Réponse courte:
Toutes les
fs.*
fonctions (par exemplefs.open
, etc.) traitent le chemin pour vous. Vous n'avez donc pas besoin depath.join
vous utiliser et de rendre votre code illisible.Longue réponse:
Toutes les
fs.*
fonctions appellentpath._makeLong(path)
, qui à leur tour appellentpath.resolve(path)
, qui a des RegExps spéciales pour Windows, qui prend en compte les barres\
obliques inverses ou les barres obliques/
. Vous pouvez le vérifier par vous-même en regardant leur code source à:la source