Створення консольних додатків
Традиційний спосіб керування консольним додатком (CLI applications) - це передача параметрів з консольного рядка під час його запуску.
Скорочення CLI (command-line interface) перекладається як "інтерфейс командного рядка".
Передані параметри під час запуску скрипту доступні в масиві process.args:
["node", "/…/youscript.js", "param 1", "param 2", …]Щоб одержати ці параметри треба виконати process.argv.slice(2), який поверне всі розділені пробілами параметри: ["param 1", "param 2", …]
Але обробляти комбінації параметрів та їх формати дуже незручно. Для цього використовують сторонні модулі. Один із найпопулярніших - commander або yargs.
Для початку ініціалізуємо проєкт:
npm init -yВстановлюємо commander:
npm i commanderЩоб підсвічувати текст в консолі різними кольорами використовують або пакет colors або chalk.
npm i colorsЩоб використовувати інтерактивне введення в консолі на кшталт питання-відповідь, будемо використовувати стандартний модуль Node.js readline. Ініціалізація достатньо проста:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin, // введення зі стандартного потоку
output: process.stdout, // виведення у стандартний потік
});Напишемо простий код програми, який приймає в консолі рядок, а потім виводить його:
У даному прикладі ми під'єднали модуль та створили екземпляр rl де в опціях передаємо потоки введення та виведення, консоль, файл і т.д. У нашому випадку ми беремо стандартні потоки та будемо працювати в консолі, де запускаємо скрипт. Обробка кожного введеного рядка відбувається через подію line.
Якщо хочемо використати пакет кольорів, щоб надати тексту певний колір треба передати його назву через крапку після рядка:
Щоб запустити цей скрипт треба виконати команду в консолі:
Утім після початку виконання коду ми з нього не виходимо. Для того, щоб вийти знову в командний рядок треба натиснути Ctrl +C.
Якщо хочемо автоматично закінчувати і закривати скрипт після виконання, то для цього є такий метод:
Але найцікавіше можливість поставити користувачеві питання та отримати на нього відповідь (аналогічна функції prompt із браузера):
Також при якійсь тривалій операції можна поставити розмову на паузу (заблокувати введення):
Щоб закрити інтерфейс readline, необхідно виконати функцію:
А тепер маючи необхідні знання - напишемо застосунок «Вгадай число». Генератор псевдовипадкових чисел "задумає" число від 1 до 10. Користувач буде вгадувати це число. Програма покаже з якої спроби вдалося вгадати число. І потім додамо можливість зберігати результати гри у файл.
Програма складається з головної функції гри, функції валідації введеного числа і функції запису результату в лог-файл. Для кольорового позначення тексту використано бібліотеку colors - достатньо через крапку вказати бажаний колір тексту.
Щоб запустити гру потрібно у терміналі виконати таку команду, де -f file.log вказує лог-файл куди будуть збережені результати гри.
Якщо ключ не вказати, то наші результати за замовчанням збережуться у файл game_results.txt.
Якщо вказати невалідний ключ, то буде повідомлення про помилковий ключ команди.
У коді повідомлення є такий текст \n - це перенесення "каретки" на новий рядок
Покликання:
Last updated