const absolutePath = path.join(__dirname, some, dir);
vs.
const absolutePath = path.resolve(__dirname, some, dir);
path.joinpołączy __dirnamenazwę katalogu bieżącego pliku połączoną z wartościami someiz dirseparatorem specyficznym dla platformy.
Natomiast
path.resolveprzetworzy __dirname, somea dirto jest od prawej do lewej poprzedzenie go przetwarzając go.
jeśli którakolwiek z wartości ścieżki głównej somelub dirodpowiada tej ścieżce, wówczas poprzednia ścieżka zostanie pominięta, a resztę przetworzy, uznając ją za główną
Aby lepiej zrozumieć tę koncepcję, wyjaśnię nieco bardziej szczegółowo oba zagadnienia: -
path.joinI path.resolvedwa różne sposoby lub funkcje modułu toru przewidziane nodejs.
Gdzie obaj akceptują listę ścieżek, ale różnica polega na wyniku, tj. W jaki sposób przetwarzają tę ścieżkę.
path.joinłączy wszystkie podane segmenty ścieżki razem, używając separatora specyficznego dla platformy jako separatora, a następnie normalizuje wynikową ścieżkę. Podczas path.resolve()przetwarzania sekwencja ścieżek od prawej do lewej, z każdą kolejną ścieżką poprzedzoną, aż do zbudowania ścieżki bezwzględnej.
Gdy nie podano argumentów
Poniższy przykład pomoże ci jasno zrozumieć obie koncepcje: -
Moja nazwa pliku to index.js a bieżący katalog roboczy toE:\MyFolder\Pjtz\node
const path = require('path');
console.log("path.join() : ", path.join());
// outputs .
console.log("path.resolve() : ", path.resolve());
// outputs current directory or equalent to __dirname
Wynik
λ node index.js
path.join() : .
path.resolve() : E:\MyFolder\Pjtz\node
path.resolve()wyświetli ścieżkę bezwzględną, gdzie jako path.join()zwraca. reprezentuje bieżący katalog roboczy, jeśli nic nie zostanie podane
Kiedy jakaś ścieżka główna jest przekazywana jako argumenty
const path=require('path');
console.log("path.join() : " ,path.join('abc','/bcd'));
console.log("path.resolve() : ",path.resolve('abc','/bcd'));
Wynik i
λ node index.js
path.join() : abc\bcd
path.resolve() : E:\bcd
path.join()tylko łączy listę wejściową z separatorem specyficznym dla platformy, podczas gdy path.resolve()proces przetwarza sekwencję ścieżek od prawej do lewej, z każdą kolejną ścieżką poprzedzoną, aż do zbudowania ścieżki bezwzględnej.