Модуль 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 В контексте данного урока это понятие означает знак или текст, который служит символом начала команды в интерфейсе командной строки

Сcылки

results matching ""

    No results matching ""