Node.js readline 模块
Node.js 教程
收录了这篇文章

readline模块是Node.js的一个内置模块,它用于从可读流(如process.stdin)读取数据,一次读取一行。这对于创建命令行接口程序非常有用,因为它允许你逐行处理用户输入。下面是一个简单的readline模块使用教程。

1. 引入readline模块

在你的Node.js脚本的开始,你需要通过require函数引入readline模块。

const readline = require('readline');

2. 创建Interface实例

接下来,你需要创建一个Interface实例,通常会传入两个参数:一个可读流(通常是process.stdin)和一个可写流(通常是process.stdout)。

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

3. 监听行事件

Interface实例提供了几个事件,其中最常用的是'line'事件。每当用户输入一行内容并按下回车键时,就会触发这个事件。

rl.on('line', (input) => {
  console.log(`你输入了: ${input}`);
  
  // 根据需要处理输入,例如判断是否退出
  if (input.toLowerCase() === 'exit') {
    rl.close();
  }
});

4. 关闭Interface

当不再需要读取更多输入时,可以调用Interface的close方法来关闭它。这通常在接收到特定退出命令或完成任务后进行。

rl.on('close', () => {
  console.log('程序已退出!');
  process.exit(0);
});

完整示例

将上述代码片段组合在一起,你将得到一个简单的命令行程序,该程序读取用户输入并打印出来,直到用户输入"exit"为止。

const readline = require('readline');

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

rl.on('line', (input) => {
  console.log(`你输入了: ${input}`);
  if (input.toLowerCase() === 'exit') {
    rl.close();
  }
});

rl.on('close', () => {
  console.log('程序已退出!');
  process.exit(0);
});

高级用法

  • 提问:可以使用rl.question()方法向用户提出问题,并在用户回答后执行回调函数。
  • 事件:除了'line'和'close'事件,还可以监听其他事件,如'pause', 'resume'等,以实现更复杂的逻辑控制。
  • 自定义提示符:可以通过修改rl.setPrompt()来自定义提示符的文本和样式。

readline模块为构建交互式命令行应用程序提供了一个强大而灵活的基础。通过掌握以上基本用法,你可以开发出功能丰富、用户体验良好的命令行工具。

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
JavaScript class 的 this 指向
WordPress 插入文章函数 wp_insert_post()
JavaScript ES6 模块
WordPress 分页
视频剪辑软件 Shotcut 笔记
MySQL 字符串截取函数 SUBSTRING_INDEX
Node.js 控制台进度条实现原理
CRSF 跨站脚本攻击已死,使用 Same-Site Cookies 来防范 CSRF