Сейчас я изучаю Node по курсу Udemy Эндрю Мида. Я только что закончил создавать первое из четырех приложений курса — приложение командной строки для создания заметок. Что я хотел бы здесь сделать, так это просто пройтись по коду и объяснить, чему я научился при написании этого приложения.

Прежде всего, я хотел бы рассказать о двух зависимостях, которые есть в проекте — chalk и yargs.

Yargs — это библиотека для разбора аргументов командной строки. Я никогда не слышал об этом, прежде чем использовать его в этом проекте. После его использования можно с уверенностью сказать, что я определенно его фанат. Это приложение сильно зависит от него. Чуть позже я расскажу, как я использовал его в этом приложении.

Второй зависимостью этого проекта является библиотечный мел.

Chalk позволяет вам стилизовать выводимый текст в вашем терминале. Довольно аккуратно (и полезно)!

Итак, давайте перейдем к тому, как вы используете приложение. Во-первых, как вы создаете заметку.

Давайте посмотрим на код, благодаря которому это происходит за кулисами.

Прежде всего, нам потребуется библиотека yargs в верхней части файла и сохранение ее в переменной «yargs». Как уже говорилось ранее, yargs — это библиотека, которая помогает анализировать аргументы командной строки. Вот как вы настраиваете команду в yargs. В основном вы передаете большой объект методу yargs.command. На первом уровне все, что вы укажете в качестве значения ключа команды, будет входом в терминал, необходимым для запуска команды — в данном случае «добавить». Ключ описания — это буквально просто описание того, для чего используется команда. Затем в конструкторе вы создаете свои параметры для команды. Поскольку это приложение для создания заметок, когда мы создаем заметку, нам, вероятно, следует дать ей заголовок и текст. Вот что мы делаем с ключами title и body внутри объекта Builder. Пара ключ/значение «demandOption: true» означает, что если эти аргументы не будут предоставлены команде, вы получите сообщение об ошибке.

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

Здесь происходит следующее: сначала мы используем вспомогательный метод loadNotes для получения всех созданных нами заметок и сохраняем их в переменной «notes». Затем мы используем функцию более высокого порядка «find» для поиска. через заметки мы уже должны увидеть, есть ли уже заметка с таким названием. Find либо возвращает один элемент из массива, либо возвращает «undefined», если не находит ничего, что соответствует переданному ему условию. Мы сохраняем значение того, что возвращается, в переменную дубликатNote. Далее у нас есть условный оператор. Помните, что find либо возвращает элемент, либо возвращает undefined, если ничего не находит. Undefined в JavaScript является ложным. Итак, мы говорим здесь в основном: «Если вы не найдете заметку с таким названием, создайте новую заметку и сохраните ее. В противном случае дайте мне знать, если этот титул уже занят».

Вот как это выглядит, когда вы пытаетесь создать заметку с названием, которое уже используется.

Так что это всего лишь небольшой пример того, что может сделать приложение. Если вы хотите проверить полное приложение — вот ссылка на репозиторий github, чтобы вы могли клонировать его и использовать для себя. Спасибо, что нашли время, чтобы проверить это!