предисловие
Недавно писал конфиг вебпака для weex.Только на яму наступил.Модуль path будет использоваться в weekpack.Для этого модуля хочу глянуть,потому что он часто используется.Друзья кому нравится это может понравиться, или перейти к моемуgithubПросто нажмите звездочку, спасибо за поддержку, поднимите мизинец и немного нажмите 😯, если написано неправильно, пожалуйста, прокомментируйте, спасибо.
Классификация путей в узле
Пути в узле примерно разделены на 5 категорий,dirname,имя файла, process.cwd(), ./, ../, первые три из которых являются абсолютными путями
Давайте рассмотрим простой пример
Предположим, у меня есть файл со следующей структурой каталогов:
editor/
- dist/
- src/
- task.js
Затем пишем код в файл task.js
const path = require('path');
console.log(__dirname);
console.log(__filename);
console.log(process.cwd());
console.log(path.resolve('./'));
Запустим node src/task.js в каталоге редактора, мы увидим результат следующим образом:
/Users/laihuamin/Documents/richEditor/editor/src
/Users/laihuamin/Documents/richEditor/editor/src/task.js
/Users/laihuamin/Documents/richEditor/editor
/Users/laihuamin/Documents/richEditor/editor
Затем мы можем запустить этот файл в каталоге src, node task.js, и результаты будут следующими:
/Users/laihuamin/Documents/richEditor/editor/src
/Users/laihuamin/Documents/richEditor/editor/src/task.js
/Users/laihuamin/Documents/richEditor/editor/src
/Users/laihuamin/Documents/richEditor/editor/src
Сравнивая два выходных результата, мы можем резюмировать следующие моменты:
1.__dirname: возвращает расположение папки, в которой находится файл
2. __filename: команда, которую вы запускаете, представляет расположение файла, независимо от того, какую команду вы запускаете, она указывает на файл.
3.process.cwd(): расположение папки, в которой вы запускаете команду node.Например, если вы запустите ее в каталоге src, она будет выводиться в src, и то же самое верно ниже.
path
После рассказа о первых трех абсолютных путях, я очень хочу поговорить о модуле пути.Этот модуль узла используется во многих местах.Поэтому для нас полезнее для нашей будущей разработки освоить его.Глядя на файл конфигурации webpack, нам также нужно проверить, для чего используется этот API, что сильно влияет на нашу эффективность.
На сайте выше есть подробные API, но нам не нужно осваивать их все здесь, я расскажу вам несколько, с которыми я столкнулся, думаю, они будут использоваться в конфигурации проекта, такого как веб-пакет.
path.normalize
Этот метод предназначен для нормализации нестандартных путей, таких как следующий пример
const path = require('path');
console.log(path.normalize('/foo/bar//baz/asdf/quux/..'));
Выходной результат:
/foo/bar/baz/asdf
path.join
const path = require('path');
console.log(path.join('src', 'task.js'));
const path = require('path');
console.log(path.join('dist', 'task.js'));
const path = require('path');
console.log(path.join(''));
Такими двумя выходными результатами являются:
src/task.js
dist/task.js
.
Его роль также очевидна, у него есть следующие правила:
1. Входящий параметр — это сегмент пути строки, который может быть одним или несколькими
2.Возвращенный путь это склеенный путь,но в зависимости от платформы он будет нормализовать путь по разному.Например система Unix это "/",система Windows это "\",тогда вы находитесь в двух системы Возвращаемые результаты, показанные ниже, отличаются.
3. Если длина возвращаемой строки пути равна нулю, то будет возвращено «.», представляющее текущую папку.
4. Если какой-либо из входящих параметров не является строкой, об ошибке будет сообщено напрямую
path.parse
Давайте сначала рассмотрим пример, напишите task.js в каталоге src
const path = require('path');
console.log(path.parse('/Users/laihuamin/Documents/richEditor/editor'));
Затем после запуска узла src/task.js вывод выглядит следующим образом:
{
root: '/',
dir: '/Users/laihuamin/Documents/richEditor',
base: 'editor',
ext: '',
name: 'editor'
}
То, что он возвращает, является объектом, так что давайте познакомимся с этими терминами:
Эта таблица должна быть довольно наглядной, но давайте объясним термины:
1.root: представляет корневой каталог
2.dir: представляет папку, в которой находится файл
3.base: представляет весь файл
4.name: представляет имя файла
5.ext: представляет суффикс имени файла.
Тогда давайте рассмотрим следующий пример по следующим правилам, лучше всего делать это в уме
const path = require('path');
console.log(path.parse('/Users/laihuamin/Documents/richEditor/editor/src/task.js'));
Результат вывода:
{
root: '/',
dir: '/Users/laihuamin/Documents/richEditor/editor/src',
base: 'task.js',
ext: '.js',
name: 'task'
}
Вы сделали это правильно? 0,0
path.basename
С предыдущим предзнаменованием, я думаю, этот интерфейс можно угадать. . . . Давайте посмотрим на следующий пример
const path = require('path');
console.log(path.basename('/Users/laihuamin/Documents/richEditor/editor/src/task.js'));
Результат:
task.js
Давайте кратко представим это, получив два параметра, один путь, а другой ext (необязательный параметр).
const path = require('path')
console.log(path.basename('/Users/laihuamin/Documents/richEditor/editor/src/task.js', '.js'));
Выходной результат:
task
path.dirname
Этот интерфейс проще, чем basename, поэтому больше говорить не буду, посмотрите на пример и посмотрите на результат
const path = require('path');
console.log(path.basename('/Users/laihuamin/Documents/richEditor/editor/src/task.js'));
Выходной результат:
/Users/laihuamin/Documents/richEditor/editor/src
Обратите внимание, что полученный параметр является строковым типом
path.extname
Это расширение файла дисплея, мы должны обратить внимание на несколько ситуаций
const path = require('path');
path.extname('index.html');
path.extname('index.coffee.md');
path.extname('index.');
path.extname('index');
path.extname('.index');
Результат:
.html
.md
.
''
''
Обратите внимание на эти
path.resolve
Ознакомимся со следующими примерами:
const path = require('path');
console.log(path.resolve('/foo/bar', '/bar/faa', '..', 'a/../c'));
Результат вывода
/bar/c
Он эквивалентен связке операций cd, давайте рассмотрим его пошагово
cd /foo/bar/ //这是第一步, 现在的位置是/foo/bar/
cd /bar/faa //这是第二步,这里和第一步有区别,他是从/进入的,也就时候根目录,现在的位置是/bar/faa
cd .. //第三步,从faa退出来,现在的位置是 /bar
cd a/../c //第四步,进入a,然后在推出,在进入c,最后位置是/bar/c
Но эта операция все же отличается от cd.Этот путь не обязательно должен существовать, и последним может быть файл
path.relative
Это возвращает относительный путь от к до. Что это значит? Давайте посмотрим на следующий пример.
const path = require('path');
console.log(path.relative('src/bar/baz', 'src/aaa/bbb'));
Результат:
../../aaa/bbb
Суммировать
Эти более практичные методы, делитесь ними со всеми, они все еще старые, см. Файл конфигурации WebPack Weektool, например, друзья могут заказать или пойти ко мнеgithubПросто нажмите звездочку, спасибо за поддержку, поднимите мизинец и немного нажмите 😯.