Модуль Readline
Цель
Ознакомится с модулем Readline и его основными методами.
Предварительныетребования
Установленны Node.js и npm
Умение работать с модулями Node.js
Знание потоков
Определение и использование
Модуль Readline предоставляет интерфейс для чтения данных из Readable потока (например, process.stdin) по одной строке за раз. Для его подключения необходимо выполнить команду require('readline')
.
Экземпляры класса readline.Interface построены с использованием метода readline.createInterface(options). Каждый экземпляр связан с одним входным (input
) Readable потоком и одним выходным (output
) Writable потоком. Поток output
используется для вывода на экран приглашения ввода данных пользователем, которые поступают и считываются с input
потока.
В процессе работы модуля генерируются несколько событий:
- Событие 'close' вызывается если вызван метод rl.close(), закончился входной поток или была нажата одна из комбинаций клавиш <ctrl>-D или <ctrl>-C
- Событие 'line' выводится всякий раз, когда входной поток получает конец строки (
\n
,\r
или\r\n
) - Событие ‘pause’ вызывается, когда входной поток был переостановлен
- Событие ‘resume’ генерируется, когда возобновляется поток input.
- Событие ‘SIGCONT’ генерируется, если процесс Node.js был предварительно перемещен в фоновый режим через <ctrl>-Z и при это поток input не был преостановлен
- Событие 'SIGINT' генерируется, когда стрим input получает ввод <ctrl>-C, известный, как SIGINT
Класса readline.Interface содержит несколько методов. Основные приведены в таблице ниже, с остальными ,как и сметодами самого модуля можно ознакомится в документации
Метод | Описание |
---|---|
rl.close() | Закрывает экземпляр readline.Interface |
rl.prompt([preserveCursor]) | Выводит настроенный prompt на новую строку в output и ожидает дальнейших действий от пользователя |
rl.question(query, callback) | Отображает query в output, ожидает ответ от пользователя, затем вызывает функцию callback, которая передает предоставленные пользователем данные в качестве первого аргумента. |
rl.setPrompt(prompt) | Устанавливает prompt, который будет записан в output каждый раз, когда вызывается rl.prompt(). |
rl.write(data, [, key]) | Метод rl.write() записывает data либо последовательность ключей, определенных key. Если key задан, data игнорируется. |
Пример использования:
const rl = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
r.question("What do you think of node.js?", function(answer) {
console.log("Thank you for your valuable feedback.");
r.close();
});
Практическое задание
Выведите в консоль два вопроса и после ответов на оба, вывидите полученную информцию.
Глоссарий
Термин | Значение |
---|---|
Prompt | В контексте данного урока это понятие означает знак или текст, который служит символом начала команды в интерфейсе командной строки |