当前位置: 首页 > news >正文

Node.js的readline模块 命令行交互的模块

Node.js是一个非常流行的JavaScript运行时环境,它提供了许多内置模块来帮助我们开发应用程序。其中之一是readline模块,它提供了一种简单的方法来读取用户输入并进行交互。

本文将详细介绍readline模块的API和使用案例,并附有代码注释。

readline模块的API

readline模块提供了一些API来读取和处理用户输入。下面是一些常用的API:

readline.createInterface(options)

该方法创建一个readline.Interface实例,该实例包含了许多用于读取和处理用户输入的方法。

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

rl.question(query, callback)

该方法用于向用户提问,并在用户输入后调用回调函数。

rl.question('What is your name? ', (name) => {console.log(`Hello, ${name}!`);rl.close();
});

rl.close()

该方法用于关闭readline.Interface实例。

rl.close();

rl.prompt()

该方法用于显示提示符,并等待用户输入。

rl.prompt();

rl.on(event, callback)

该方法用于监听readline.Interface实例上的事件,并在事件触发时调用回调函数。常用的事件包括line、close和SIGINT。

rl.on('line', (input) => {console.log(`Received: ${input}`);
});

readline模块的使用案例

下面是一个简单的使用readline模块的例子,它会向用户提问并输出用户输入的内容。

const readline = require('readline');const rl = readline.createInterface({input: process.stdin,output: process.stdout
});rl.question('What is your name? ', (name) => {console.log(`Hello, ${name}!`);rl.close();
});

在这个例子中,我们使用了readline.createInterface方法创建了一个readline.Interface实例,并使用rl.question方法向用户提问。当用户输入后,我们会调用回调函数并输出用户输入的内容。

下面是一个更复杂的例子,它会让用户输入一些数字并计算它们的总和。

const readline = require('readline');const rl = readline.createInterface({input: process.stdin,output: process.stdout
});let sum = 0;function ask() {rl.question('Enter a number (or "done" to finish): ', (input) => {if (input === 'done') {console.log(`The sum is ${sum}.`);rl.close();} else {const num = parseInt(input, 10);if (!isNaN(num)) {sum += num;}ask();}});
}ask();

在这个例子中,我们使用了一个ask函数来递归地向用户提问,直到用户输入了“done”。在每次输入后,我们会将用户输入的数字相加,并在最后输出它们的总和。

总结

readline模块是Node.js中一个非常有用的模块,它可以帮助我们读取和处理用户输入。在本文中,我们详细介绍了readline模块的API和使用案例,并为代码添加了注释,希望对你有所帮助。

http://www.lryc.cn/news/205146.html

相关文章:

  • 前沿重器[36] | ACL23-基于检索的大语言模型-报告阅读
  • 2023秋招笔试算法Python3题解
  • uniapp--点击上传图片到oss再保存数据给后端接口
  • 创建Secret(使用kubectl)
  • Notepad++正则查询替换操作
  • Hive特殊函数的使用
  • Unity Spine 指定导入新Spine动画的默认材质
  • lvs负载均衡集群
  • MySQL---表的增查改删(CRUD基础)
  • 听GPT 讲Rust源代码--library/std(2)
  • 力扣第1005题 K 次取反后最大化的数组和 c++ 贪心 双思维
  • Swoole 4.8版本的安装
  • ChatGPT和Copilot协助Vue火速搭建博客网站
  • javaEE -8(9000字详解网络编程)
  • FPGA从入门到精通(二十)SignalTapII
  • RHCE---shell 条件测试
  • Linux下QT打开文件选择对话框时,程序报错退出
  • PyTorch中的intrusive_ptr
  • webrtc-stream编译报错记录
  • 什么是Docker CLI
  • Java项目_家庭记账(简易版)
  • vscode json文件添加注释报错
  • vue3移动端嵌入pdf的两种办法
  • 中文编程开发语言工具系统化教程初级1上线
  • 零售数据分析模板分享(通用型)
  • Spring Cloud之微服务
  • Linux命令(104)之date
  • 微信小程序投票管理系统:打造智能、便捷的投票体验
  • 【算法训练-动态规划 五】【二维DP问题】编辑距离
  • Windows电脑如何录制电脑桌面?