📅  最后修改于: 2023-12-03 15:17:55.445000             🧑  作者: Mango
Readline()
是 Node.js 内置模块之一,用于读取和处理标准输入和输出流的数据。该模块最常用的场景是实现命令行界面(CLI),它提供了一种方便、快速的方式来与用户交互。
Readline()
将标准输入流和标准输出流封装了起来,它可以监听用户输入事件(on('line'))并做出相应的行为,如下所示:
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("What do you think of Node.js? ", function(answer) {
console.log("Thank you for your valuable feedback:", answer);
});
在上述代码中,我们创建了一个 Readline()
实例,该实例需要传入一个 input
流和一个 output
流,这里我们用的是标准输入和标准输出。rl.question()
当监听到用户输入并按下回车键时,将触发回调函数,并将用户输入的原始值作为参数传递。
使用默认的 Readline() 实例会输出一个长长的提示符,但我们可以通过创建一个自定义的 Readline() 实例来实现输出个性化提示符。如下所示:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function ask(question) {
return new Promise(resolve => {
rl.question(question, resolve);
});
}
(async function() {
let name = await ask("What is your name? ");
let age = await ask("What is your age? ");
console.log(`Hello ${name}, you are ${age} years old!`);
})();
在上述代码中,我们定义了一个 ask()
函数,该函数返回一个 Promise,用于等待用户输入并返回用户输入的原始值。通过在字符串中插入变量,我们可以实现输出个性化提示符,如输出 What is your name?
和 What is your age?
这样的提示。
当我们完成了对标准输入流和标准输出流的操作后,我们需要关闭 Readline()
。如下所示:
rl.close();
Readline()
模块是 Node.js 内置模块之一,用于读取和处理标准输入和输出流的数据。它最常用于实现命令行界面(CLI)场景,并提供了方便、快速的方式来与用户交互。我们可以通过自定义 Readline() 实例实现个性化提示符,以提高用户体验。当我们完成对标准输入流和标准输出流的操作后,需要使用 rl.close()
方法关闭 Readline()
。