Всем привет! Это шестой пост в моей новой серии статей Node.js модули, о которых вы должны знать.
Первый пост был про dnode — фристайл RPC библиотеку для node.js. Второй пост был посвящен optimist — легковесному парсеру командной строки для node.js. Третий был про lazy — ленивые списки для node.js. А четвертый — про request — швецарский нож HTTP стримминга. Пятый был про hashish — библиотеку для работы с хэшами.
В этой заметке я расскажу про новый (по состоянию на 08-дек-2011, прим. перевод.) модуль — read, который был создан буквально вчера. Автор — Isaac Z. Schlueter, который так же является автором npm. По сути, read — это read(1) для node.js. С его помощью вы легко сможете читать стандартный поток ввода (stdin).
Пример использования:
var read = require('read');
read({ prompt : 'Username: ' }, function (err, user) {
read({ prompt : 'Password: ', silent : true }, function (err, pass) {
console.log(user, pass);
process.stdin.destroy();
});
})
Такая вложенность функций — это, конечно, «не айс». Так что, лучше воспользоваться, например, seq, библиотекой асинхронного контроля потока событий, автором которой является уже не безызвестный James Halliday. Немного позже я так же расскажу про этот модуль. Вот как будет выглядеть тот же пример с seq:
var read = require('read');
var Seq = require('seq');
Seq()
.seq(function () {
read({ prompt : 'Username: ' }, this.into('user'));
})
.seq(function () {
read({ prompt : 'Password: ', silent : true }, this.into('pass'));
})
.seq(function (pass) {
console.log(this.vars.user, this.vars.pass);
});
Вот все настройки, которые поддерживает read:
prompt - Что вывести на экран (stdout) перед чтением ввода (stdin).
silent - Не отображать ввод пользователя при наборе.
num - Максимальное число символов, которое необходимо прочитать.
delim - Символ, обозначающий конец ввода. По умолчанию: "\n".
timeout - Время ожидания ввода пользователя в мс.
Обратите внимание, что если silent
== true
или задан num
, или
для delim
задано что-то, отличное от "\n"
, то чтение будет происходить
по-символьно.
Установить read можно через npm:
npm install read
Наслаждайтесь!