const absolutePath = path.join(__dirname, some, dir);
против
const absolutePath = path.resolve(__dirname, some, dir);
path.joinбудет объединено, __dirnameкоторое является именем каталога текущего файла, объединенного со значениями someи dirсо специфичным для платформы разделителем.
В то время как
path.resolveбудет обрабатывать __dirname, someи dirто есть справа налево предваряя его обработки.
если какое-либо из значений someили dirсоответствует корневому пути, тогда предыдущий путь будет пропущен, и процесс rest будет считаться корневым.
Чтобы лучше понять концепцию, позвольте мне объяснить несколько более подробно следующее:
path.joinиpath.resolve два различных метода или функции модуля пути , предоставляемые nodejs.
Когда оба принимают список путей, но разница возникает в результате, т.е. как они обрабатывают этот путь.
path.joinобъединяет все заданные сегменты пути вместе, используя специфический для платформы разделитель в качестве разделителя, а затем нормализует результирующий путь. Во время path.resolve()процесса последовательность путей справа налево, с каждым последующим путем, предваряемым, пока не будет построен абсолютный путь.
Когда аргументы не предоставлены
Следующий пример поможет вам четко понять обе концепции:
Мое имя файла index.jsи текущий рабочий каталогE:\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
результат
λ node index.js
path.join() : .
path.resolve() : E:\MyFolder\Pjtz\node
path.resolve()Метод выведет абсолютный путь, где в качестве path.join()возврата. представляет текущий рабочий каталог, если ничего не указано
Когда некоторый корневой путь передается в качестве аргументов
const path=require('path');
console.log("path.join() : " ,path.join('abc','/bcd'));
console.log("path.resolve() : ",path.resolve('abc','/bcd'));
Результат я
λ node index.js
path.join() : abc\bcd
path.resolve() : E:\bcd
path.join()только объединяет входной список с разделителем, специфичным для платформы, в то время как path.resolve()обрабатывает последовательность путей справа налево, причем каждый последующий путь добавляется до тех пор, пока не будет создан абсолютный путь.