Readline Module en Node.js permite la lectura del flujo de entrada línea por línea. Este módulo concluye la salida estándar del proceso y los objetos de entrada estándar del proceso. El módulo Readline facilita la entrada y la lectura de la salida dada por el usuario. Para usar este módulo, cree un nuevo archivo JavaScript y escriba el siguiente código al inicio de la aplicación:
var readline = require('readline');
El módulo Readline viene con diferentes métodos para interactuar con el usuario.
Interacción con el usuario: Para la interacción, primero crearemos una interfaz para la entrada y salida. Para crear una interfaz, escriba el siguiente código:
javascript
var readline = require('readline'); var rl = readline.createInterface( process.stdin, process.stdout);
Aquí, el método createInterface() toma dos argumentos. El primer argumento será para la entrada estándar y el segundo será para leer la salida estándar.
javascript
rl.question('What is your age? ', (age) => { console.log('Your age is: ' + age); });
Aquí, el método rl.question() se usa para hacer preguntas al usuario y leer su respuesta (salida). El primer parámetro se usa para hacer la pregunta y el segundo parámetro es una función de devolución de llamada que tomará la salida del usuario como parámetro y la devolverá a la consola.
La salida para el código anterior será:
What is your age? 20 Your age is: 20
Aquí, el problema es que no saldrá de la aplicación y seguirá solicitando las entradas. Para resolver este problema, se utiliza el método rl.close() . Este método cerrará la interfaz. Para usarlo en la aplicación, escriba lo siguiente:
javascript
rl.question('What is your age? ', (age) => { console.log('Your age is: ' + age); rl.close(); });
También podemos usar un método setPrompt() para establecer la declaración particular en la consola. método prompt() para mostrar la declaración que se establece en el método setPrompt(). Por lo tanto, escribe el siguiente código –
javascript
var readline = require('readline'); var rl = readline.createInterface( process.stdin, process.stdout); rl.setPrompt(`What is your age? `); rl.prompt()
Este código tomará la entrada del usuario. Ahora, necesitamos un oyente para leer la entrada del usuario y mostrarla en la consola. Para este propósito, Readline Module tiene un método de escucha llamado que tomará dos parámetros. El primer parámetro será el evento y el segundo parámetro será una función de devolución de llamada que devolverá la salida a la consola. Por ejemplo –
javascript
var readline = require('readline'); var rl = readline.createInterface( process.stdin, process.stdout); rl.setPrompt(`What is your age? `); rl.prompt(); rl.on('line', (age) => { console.log(`Age received by the user: ${age}`); rl.close(); });
Aquí, el método rl.on() toma el primer argumento como evento de línea . Este evento se invoca cada vez que el usuario presiona la tecla Enter . La salida para el código anterior será:
What is your age? 20 Age received by the user: 20
Eventos: Junto con el oyente, el módulo readline también viene con las propiedades de eventos . Aprendamos sobre los diversos eventos.
- close: este evento se invoca cuando se llama al método rl.close() o cuando el usuario presiona ctrl + c para cerrar la interfaz.
- línea: este evento se invoca cada vez que el usuario presiona las teclas Intro o Retorno . Este evento se llama en la función de escucha. Por ejemplo –
javascript
rl.on('line', (input) => { console.log(`Input Received: ${input}`); rl.close(); });
- pausa: este evento se invoca cuando el flujo de entrada está en pausa. Por ejemplo –
javascript
rl.on('pause', () => { console.log('Paused Event is invoked'); });
- La salida para el código anterior será:
Paused Event is invoked
- reanudar: este evento se invoca cada vez que se reanuda la entrada . Por ejemplo –
javascript
rl.on('resume', () => { console.log('Resume Event is invoked.'); });
- SIGINT: este evento se invoca cada vez que el usuario presiona el botón ctrl + c . Si no hay detectores de eventos registrados cuando se invoca SIGINT, se invocará el evento de pausa . Por ejemplo –
javascript
rl.on('SIGINT', () => { rl.question('Exit (y or n)? ', (input) => { if (input.match(/^y(es)?$/i)) { rl.pause(); } }); });
- Este código hará la pregunta dada si el usuario presiona la tecla ctrl + c . Aquí, si la entrada proporcionada coincide con y o sí, se llamará al método pause() en la interfaz.
- SIGTSTP: este evento se invoca cada vez que el usuario ingresa ctrl + z . Esta entrada se conoce como SIGTSTP. Si un usuario no proporciona la entrada SIGTSTP, el proceso en ejecución actual se enviará a un segundo plano. Por ejemplo –
javascript
rl.on('SIGTSTP', () => { console.log('SIGTSTP event is invoked.'); })
- SIGCONT: este evento se invoca cuando un proceso que se envió a segundo plano mediante SIGTSTP se vuelve a llevar al proceso de ejecución frontal. Por ejemplo –
javascript
rl.on('SIGCONT', () => { console.log('SIGCONT event is invoked.'); rl.prompt(); })
Conclusión: en este artículo, aprendimos sobre el módulo Readline en Node.js. Además, aprendimos sobre sus diversas implementaciones utilizando métodos, variables, eventos y oyentes.
Publicación traducida automáticamente
Artículo escrito por pranjal_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA