Несколько знаний о путях к файлам, которыми также должен овладеть фронтенд-инженер

Node.js JavaScript
Несколько знаний о путях к файлам, которыми также должен овладеть фронтенд-инженер

предисловие

делалwebpackКонтент, связанный с путем, используется много раз во время настройки.При написании проекта в последнее время есть файл, который необходимо загрузить в операционную систему Alibaba Cloud, а на локальном сервере также необходимо сохранить резервную копию файла. Контент, связанный с путями к файлам, и основной API Node используются много раз.pathмодуль, поэтому я систематически изучил его и организовал эту статью.

Об авторе: koala, сосредоточив внимание на совместном использовании полного стека технологий Node.js, от JavaScript до Node.js, до серверной базы данных, я желаю вам стать отличным старшим инженером Node.js. [Руководство по развитию программиста] Автор, блог Github с открытым исходным кодомGitHub.com/koala-co Nth…

Классификация путей в узле

Пути в узле примерно разделены на 5 категорий,dirname,filename,process.cwd(),./,../dirname,filename,process.cwd()абсолютный путь

Каждая категория объясняется кодом:

Структура файлового каталога выглядит следующим образом:

代码pra/
  - node核心API/
      - fs.js
      - path.js

код в path.js

const path = require('path');
console.log(__dirname);
console.log(__filename);
console.log(process.cwd());
console.log(path.resolve('./'));

Запустите команду в каталоге кода pranode node核心API/path.js, мы можем увидеть результат следующим образом:

/koala/Desktop/程序员成长指北/代码pra/node核心API
/koala/Desktop/程序员成长指北/代码pra/node核心API/path.js
/koala/Desktop/程序员成长指北/代码pra
/koala/Desktop/程序员成长指北/代码pra

Тогда у нас естьnode核心API目录下запустить этот файл,node path.js, Результаты приведены ниже:

/koala/Desktop/程序员成长指北/代码pra/node核心API
/koala/Desktop/程序员成长指北/代码pra/node核心API/path.js
/koala/Desktop/程序员成长指北/代码pra/node核心API
/koala/Desktop/程序员成长指北/代码pra/node核心API

Сравнивая полученные результаты, можно сделать предварительный вывод, что

  • __dirname: всегда возвращает абсолютный путь к папке, в которой находится исполняемый js
  • __filename: всегда возвращает абсолютный путь к выполненному js
  • process.cwd(): всегда возвращает абсолютный путь к папке, в которой была запущена команда node.
  • ./: то же, что и process.cwd(), возвращает абсолютный путь к папке, в которой находилась команда node.

Почему вы говорите, что это временное заключение, потому что есть ошибка, посмотрите на кусок кода: Добавляем этот код в path.js

exports.A = 1;

Перед чтением пути к файлу напрямую через readFile сообщалось об ошибке.

fs.readFile('./path.js',function(err,data){
   
});

Теперь добавьте эти две строки кода в файл fs.js, который только что сообщил об ошибке:

const test = require('./path.js');
console.log(test)

существует代码pra/запустить в каталогеnode node核心API/fs.js, и, наконец, проверьте результат, указав, что он доступен:

{ A: 1 }

Так о./Правильный вывод такой:

существуетrequire()используется в__dirnameЭффект тот же, и он не изменится, потому что каталог запуска скрипта другой, в остальных случаях он такой же, какprocess.cwd()Эффект тот же, путь относительно каталога, в котором находится сценарий запуска.

Резюме знаний пути:

  • __dirname: получить полное имя каталога, в котором находится текущий исполняемый файл.
  • __filename: получить имя файла с полным абсолютным путем к текущему исполняемому файлу.
  • process.cwd(): получить имя каталога папки, когда команда node выполняется в данный момент.
  • ./: Когда не используется требование,./а такжеprocess.cwd()то же самое, используйтеrequireкогда, с__dirnameТакой же

Относительные пути (./, ../) используются только в функции require(), а абсолютные пути используются в других местах, как показано ниже:

// 当前目录下
 path.dirname(__filename) + '/path.js'; 
// 相邻目录下
 path.resolve(__dirname, '../regx/regx.js');

path

Сравнение путей было объяснено ранее.Далее мы поговорим о модуле пути отдельно.Этот модуль обычно используется во многих местах.Поэтому для нас будет полезнее для нашего будущего развития освоить его,не глядя на настройка вебпака каждый раз.В файле так же нужно проверять для чего используется этот апи, что сильно влияет на нашу эффективность.

Это адрес официального сайта API:узел будет .org/API/path.Контракт...

Лично я не думаю, что необходимо осваивать все API на официальном сайте.Далее будут описаны некоторые часто используемые API, которые я часто использую, или которые я часто использую в качестве разработчика интерфейса при настройке таких проектов, как веб-пакет.

path.normalize

Например

const path = require('path');

console.log(path.normalize('/koala/Desktop//程序员成长指北//代码pra/..'));

нормализованный результат

/koala/Desktop/程序员成长指北/代码pra

Сводка действий

Нормализовать пути, нормализовать нестандартные пути.

path.join

Например

const path = require('path');
console.log(path.join('src', 'task.js'));

const path = require('path');
console.log(path.join(''));

преобразованный результат

src/task.js
.

Сводка действий

path.join([...paths])

  1. Передаваемый параметр представляет собой фрагмент пути строки, который может быть одним или несколькими
  2. Возвращается склеенный путь, но в зависимости от платформы он будет нормализовать путь по-разному, например,Unixсистема/,Windowsсистема\, то результаты возврата, которые вы видите в двух системах, будут разными.
  3. Если длина возвращаемой строки пути равна нулю, она вернет., который представляет текущую папку.
  4. Если какой-либо из входящих параметров не является строкой, об ошибке будет сообщено напрямую

path.parse

Например

const path = require('path');
console.log(path.parse('/koala/Desktop/程序员成长指北/代码pra/node核心API'));

результат операции

{ root: '/',
  dir: '/koala/Desktop/程序员成长指北/代码pra',
  base: 'node核心API',
  ext: '',
  name: 'node核心API' 
}

Сводка действий

То, что он возвращает, является объектом, так что давайте познакомимся с этими терминами:

  1. root: представляет корневой каталог
  2. dir: представляет папку, в которой находится файл
  3. base: представляет весь файл
  4. имя: представляет имя файла
  5. ext: представляет суффикс имени файла

path.basename

Например

const path = require('path');
console.log(path.basename('/koala/Desktop/程序员成长指北/代码pra/node核心API'));
console.log(path.basename('/koala/Desktop/程序员成长指北/代码pra/node核心API/path.js', '.js'));

результат операции

Глядя на пример приведенного выше кода, я думаю, что должен знать результат базового имени, хе-хе.

node核心API
path

Сводка действий

basename принимает два параметра, первыйpath, второйext(необязательный параметр), при вводе второго параметра имя суффикса не отображается в результатах печати

path.dirname

Например

const path = require('path');
console.log(path.dirname('/koala/Desktop/程序员成长指北/代码pra/node核心API'));

результат операции

/koala/Desktop/程序员成长指北/代码pra

Сводка действий

Возвращает полный адрес каталога файла

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

Сводка действий

path.resolve([...paths])

path.resolve эквивалентен следующей оболочкеcdоперация, бег слева направоcd pathКоманда, наконец получен абсолютный путь/имя файла, результат, возвращаемый этим интерфейсом. ноresolveоперация иcdОперация все-таки другая.resolveПуть может отсутствовать, а последней записью может быть файл. специфическийcdДействуйте следующим образом

cd /foo/bar/    //这是第一步, 现在的位置是/foo/bar/
cd /bar/faa     //这是第二步,这里和第一步有区别,他是从/进入的,也就时候根目录,现在的位置是/bar/faa
cd ..       //第三步,从faa退出来,现在的位置是 /bar
cd a/../c   //第四步,进入a,然后在推出,在进入c,最后位置是/bar/c

path.relative

Например

const path = require('path');

console.log(path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'));

console.log(path.relative('/data/demo', '/data/demo'));

console.log(path.relative('/data/demo', ''));

результат операции

../../impl/bbb
 ""
 ../../koala/Desktop/程序员成长指北/代码pra/node核心API

Сводка действий

path.relative(from, to)

Описание: относительный путь от пути «от» к пути «до».

граница:

  • Если from и to указывают на один и тот же путь, верните пустую строку.
  • Если значение from или to пусто, возвращается текущий рабочий путь.

Суммировать

Знания о путях из этой статьи здесь.Основа очень важна, что может не только сэкономить время разработки, но и уменьшить количество ошибок.

Так много, чем можно поделиться сегодня.Если вы заинтересованы в общем контенте, вы можете подписаться на официальную учетную запись «Руководство по развитию программиста» или присоединиться к группе технического обмена, чтобы обсудить его вместе.

Маршрут передовых технологий

Присоединяйтесь к нам, чтобы учиться вместе!