Node.js readline模块解析

readline模块允许开发者以逐行的方式从可读流(例如 process.stdin)读取数据。尽管在 Node.js 命令行模式下该模块默认引入,但在脚本中使用时,需要手动引入:

const readline = require('readline');

创建readline接口实例

创建 readline 接口实例需要提供一个包含以下属性的对象:

  • input:(必需) 监听的可读流。
  • output:(必需) readline 写入的可写流。
  • completer:(可选) 用于 Tab 自动补全的函数,不常用。
  • terminal:(可选) 布尔值,指示是否将 inputoutput 流视为 TTY 设备。

以下代码演示了如何创建一个 readline 接口实例:

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

readline 方法

readline 接口实例提供以下常用方法:

  • rl.question(query, callback):在终端输出 query 并等待用户输入,将用户输入作为参数传递给 callback 函数。
  • rl.on('line', (input) => {}):监听 line 事件,每当用户输入一行内容并按下回车键时触发,将用户输入作为参数传递给回调函数。
  • rl.close():关闭 rl 实例,停止监听输入。

示例

以下示例演示了如何使用 readline 模块实现一个简单的命令行交互程序:

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('你的名字是? ', (name) => {
  console.log(`你好,${name}!`);
  rl.close();
});

该程序会询问用户的名字,并在用户输入后输出问候语。

总结

readline 模块为 Node.js 开发者提供了便捷的命令行交互功能,适用于构建简单的 CLI 工具或与用户进行交互。

pdf 文件大小:68.27KB