📜  Node.js Readline() 模块(1)

📅  最后修改于: 2023-12-03 15:17:55.445000             🧑  作者: Mango

Node.js Readline() 模块

Readline() 是 Node.js 内置模块之一,用于读取和处理标准输入和输出流的数据。该模块最常用的场景是实现命令行界面(CLI),它提供了一种方便、快速的方式来与用户交互。

Basci usage

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()

当我们完成了对标准输入流和标准输出流的操作后,我们需要关闭 Readline()。如下所示:

rl.close();
总结

Readline() 模块是 Node.js 内置模块之一,用于读取和处理标准输入和输出流的数据。它最常用于实现命令行界面(CLI)场景,并提供了方便、快速的方式来与用户交互。我们可以通过自定义 Readline() 实例实现个性化提示符,以提高用户体验。当我们完成对标准输入流和标准输出流的操作后,需要使用 rl.close() 方法关闭 Readline()