Wie jeder weiß, erstellt Windows Pfade mit umgekehrten Schrägstrichen, während Unix Pfade mit Schrägstrichen erstellt. node.js sieht vor path.join()
, immer den richtigen Schrägstrich zu verwenden. Anstatt beispielsweise nur Unix zu schreiben 'a/b/c'
, würden Sie dies path.join('a','b','c')
stattdessen tun .
Es scheint jedoch, dass trotz dieses Unterschieds a/b/c
kein Problem mit der Ausführung Ihrer Skripte unter Windows besteht, wenn Sie Ihre Pfade nicht normalisieren (z. B. mit path.join) und nur Pfade wie node.js schreiben .
So gibt es einen Vorteil gegenüber schriftlich path.join('a','b','c')
über 'a/b/c'
? Beide scheinen unabhängig von der Plattform zu funktionieren ...
path.join
kümmert sich um unnötige Trennzeichen, die auftreten können, wenn die angegebenen Pfade aus unbekannten Quellen stammen (z. B. Benutzereingaben, APIs von Drittanbietern usw.).So
path.join('a/','b')
path.join('a/','/b')
,path.join('a','b')
undpath.join('a','/b')
werden alle gebena/b
.Ohne es zu verwenden, würden Sie normalerweise Erwartungen über den Beginn und das Ende der verbundenen Pfade stellen, da Sie wissen, dass sie nur keinen oder nur einen Schrägstrich haben.
quelle
Ich verwende,
path.join
um sicherzustellen, dass sich Ordnertrennzeichen an den richtigen Stellen befinden, nicht unbedingt, um sicherzustellen, dass Schrägstriche vorwärts oder rückwärts verwendet werden. Beispielsweise:Fügt das Trennzeichen zwischen www und test korrekt ein
/var/www/test
quelle
path.join
wäre in Ihrer anderen Antwort hier stackoverflow.com/questions/9027648/… . Diese Antwort führte mich hierher zu einer anderen Frage, die Sie selbst beantwortet haben :)return baseDir + relativePath + filename;
. Ich habe es sofort durch ersetztreturn path.join(baseDir, relativePath, filename);
. Es ist in der Tat sehr hilfreich!Kurze Antwort:
Alle
fs.*
Funktionen (z. B.fs.open
usw.) behandeln den Pfadnamen für Sie. Sie müssen sich also nichtpath.join
selbst verwenden und Ihren Code unleserlich machen.Lange Antwort:
Alle
fs.*
Funktionen rufen aufpath._makeLong(path)
, was wiederumpath.resolve(path)
aufruft und über spezielle RegExps für Windows verfügt, die Schrägstriche\
oder Schrägstriche berücksichtigen/
. Sie können es selbst überprüfen und sich den Quellcode ansehen unter:quelle