jak wszyscy wiedzą, Windows tworzy ścieżki z ukośnikami odwrotnymi, podczas gdy Unix tworzy ścieżki z ukośnikami w przód. node.js zapewnia, path.join()
aby zawsze używać prawidłowego ukośnika. Na przykład zamiast pisać o Uniksie, tylko 'a/b/c'
ty byś zrobił path.join('a','b','c')
.
Wydaje się jednak, że pomimo tej różnicy, jeśli nie znormalizujesz swoich ścieżek (np. Używając path.join) i po prostu napiszesz ścieżki takie jak a/b/c
node.js nie ma problemu z uruchomieniem skryptów w systemie Windows.
Więc jest jakaś korzyść przez pisanie path.join('a','b','c')
na 'a/b/c'
? Oba wydają się działać niezależnie od platformy ...
path.join
zajmie się niepotrzebnymi ogranicznikami, które mogą wystąpić, jeśli podane ścieżki pochodzą z nieznanych źródeł (np. dane wejściowe użytkownika, zewnętrzne interfejsy API itp.).Tak
path.join('a/','b')
path.join('a/','/b')
,path.join('a','b')
ipath.join('a','/b')
będzie wszystko daća/b
.Bez jej używania zazwyczaj można by oczekiwać od początku i końca połączonych ścieżek, wiedząc, że nie mają one tylko jednego ukośnika.
źródło
Używam,
path.join
aby upewnić się, że separatory folderów znajdują się we właściwych miejscach, niekoniecznie aby upewnić się, że używa ukośników do przodu i do tyłu. Na przykład:path.join("/var/www", "test")
Poprawnie wstawi separator między www i test
/var/www/test
źródło
path.join
byłoby w innej odpowiedzi tutaj stackoverflow.com/questions/9027648/… . Ta odpowiedź doprowadziła mnie tutaj do kolejnego pytania, na które odpowiedziałeś sam :)return baseDir + relativePath + filename;
. Zastąpiłem go od razureturn path.join(baseDir, relativePath, filename);
. To naprawdę bardzo pomocne!Krótka odpowiedź:
Wszystkie
fs.*
funkcje (np.fs.open
Itp.) Traktują nazwę ścieżki za Ciebie. Nie musisz więc używaćpath.join
siebie i czynić swojego kodu nieczytelnym.Długa odpowiedź:
Wszystkie
fs.*
funkcje wywołująpath._makeLong(path)
, które z kolei wywołująpath.resolve(path)
, który ma specjalne wyrażenie RegExps dla Windows, które uwzględnia ukośnik odwrotny\
lub ukośnik w przód/
. Możesz to sprawdzić na własne oczy, przeglądając ich kod źródłowy pod adresem:źródło