3 ответов:
две функции имеют дело с сегментами, начиная с
/очень по-разному;joinбудет просто объединить его с предыдущим аргументом, однакоresolveбудет рассматривать это как корневой каталог, и игнорировать все предыдущие пути-думайте об этом как о результате выполненияcdС каждым аргументом:path.join('/a', '/b') // Outputs '/a/b' path.resolve('/a', '/b') // Outputs '/b'еще одна вещь, чтобы отметить, что
path.resolveвсегда будет приводить к абсолютному URL-адресу и будет использовать ваш рабочий каталог в качестве базы для разрешения этого пути. Но как__dirnameэто абсолютный путь в любом случае это не имеет значения в вашем случае.а на какой вы должны использовать, ответ: это зависит от того, как вы хотите, сегменты, начиная с
/вести себя-должны ли они быть просто объединены или они должны действовать как новый корень?если другие аргументы жестко закодированы, это действительно не имеет значения, и в этом случае вы, вероятно, должны рассмотреть (а), как эта строка может измениться в будущем и (Б) насколько она согласуется с другими местами в код.
операции по умолчанию пути файловой системы варьируются в зависимости от операционной системы нам нужна какая-то вещь, которая ее абстрагирует. Элемент
pathмодуль предоставляет утилиты или API для работы с файлом и каталогом пути. вы можете включить его в свой проект с помощьюconst path = require('path');The
path.joinиpath.resolveдва различных метода модуля пути.оба эти метода принимают последовательность путей или сегментов пути.
The
path.resolve()метод разрешает a последовательность путей или сегментов пути в абсолютный путь.The
path.join()метод объединяет все заданные сегменты пути вместе, используя разделитель платформы в качестве разделителя, а затем нормализует результирующий путь.для того чтобы лучше понять и дифференцировать поведение, позвольте мне объяснить это с разных сценариях.
1. Если мы не предоставляем никаких аргументов или пустую строку
в моем случае имя
index.jsи текущий рабочий каталогE:\MyFolder\Pjtz\nodeconst path = require('path'); console.log("path.join() : ", path.join()); // outputs . console.log("path.resolve() : ", path.resolve()); // outputs current directory or equalent to __dirname of the node processи при запуске результат, как показано ниже
λ node index.js path.join() : . path.resolve() : E:\MyFolder\Pjtz\nodeвывод из вышеприведенного эксперимента Тха
path.resolve()метод вывода абсолютный путь гдеpath.join()возвращает . представление текущего рабочего каталога или относительный путь если ничего не предусмотрено2. Добавление / путь как любой из аргументы.
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()обрабатывайте последовательность путей справа налево, с каждым последующим путем до тех пор, пока не будет построен абсолютный путь.
path.join()объединяет каждый аргумент с конкретными разделителями ОС, в то время какpath.resolve()будет разрешить каждый спор с корня и производства продукции.
1) путь.решения создает абсолютный путь.
метод создает absoulte path справа налево пока не будет построен абсолютный путь.
например:
path.resolve('/a', 'b', 'c'); // C:\a\b\c path.resolve('/a', '/b', 'c'); // C:\b\c path.resolve('/a', '/b', '/c'); // C:\cЕсли абсолютный путь не генерируется, метод с использованием текущего рабочего каталога:
например:
path.resolve('a', 'b', 'c'); // C:\{current_working_directory}\a\b\c2) путь.join соединяет все пути и нормализует результат
для пример:
path.join('/a', '/b', '/c'); // \a\b\c path.join('/a', '/b', 'c'); // \a\b\c path.join('/a', 'b', 'c'); // \a\b\c path.join('a', 'b', 'c'); // \a\b\c
Comments