Читать на других языках: Русский, Українська.
Создай ветку 01-node-basics из ветки master.
- Инициализируй npm в проекте
- В корне проекта создай файл
index.js - Поставь пакет nodemon как зависимость разработки (devDependencies)
- В файле
package.jsonдобавь "скрипты" для запускаindex.js- Скрипт
startкоторый запускаетindex.jsс помощьюnode - Скрипт
devкоторый запускаетindex.jsс помощьюnodemon
- Скрипт
В корне проекта создай папку db. Для хранения контактов скачай и используй
файл contacts.json, положив его в папку db.
В корне проекта создай файл contacts.js.
- Сделай импорт модулей
fsиpathдля работы с файловой системой - Создай переменную
contactsPathи запиши в нее путь к файлеcontacts.json. Для составления пути ипользуй методы модуляpath. - Добавь функции для работы с коллекцией контактов. В функциях используй модуль
fsи его методыreadFile()иwriteFile() - Сделай экспорт созданных функций через
module.exports
// contacts.js
/*
* Раскомментируй и запиши значение
* const contactsPath = ;
*/
// TODO: задокументировать каждую функцию
function listContacts() {
// ...твой код
}
function getContactById(contactId) {
// ...твой код
}
function removeContact(contactId) {
// ...твой код
}
function addContact(name, email, phone) {
// ...твой код
}Сделай импорт модуля contacts.js в файле index.js и проверь
работоспособность функций для работы с контактами.
В файле index.js импортируется пакет yargs для удобного парса аргументов
командной строки. Используй готовую функцию invokeAction() которая получает
тип выполняемого действия и необходимые аргументы. Функция вызывает
соответствующий метод из файла contacts.js передавая ему необходимые
аргументы.
// index.js
const argv = require('yargs').argv;
// TODO: рефакторить
function invokeAction({ action, id, name, email, phone }) {
switch (action) {
case 'list':
// ...
break;
case 'get':
// ... id
break;
case 'add':
// ... name email phone
break;
case 'remove':
// ... id
break;
default:
console.warn('\x1B[31m Unknown action type!');
}
}
invokeAction(argv);Запусти команды в терминале и сделай отдельный скриншот результата выполнения каждой команды.
# Получаем и выводим весь список контакстов в виде таблицы (console.table)
node index.js --action="list"
# Получаем контакт по id
node index.js --action="get" --id=5
# Добавялем контакт
node index.js --action="add" --name="Mango" --email="mango@gmail.com" --phone="322-22-22"
# Удаляем контакт
node index.js --action="remove" --id=3