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

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

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

readline模块的API

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

readline.createInterface(options)

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

javascript 复制代码
const readline = require('readline');

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

rl.question(query, callback)

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

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

rl.close()

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

javascript 复制代码
rl.close();

rl.prompt()

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

javascript 复制代码
rl.prompt();

rl.on(event, callback)

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

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

readline模块的使用案例

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

javascript 复制代码
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方法向用户提问。当用户输入后,我们会调用回调函数并输出用户输入的内容。

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

javascript 复制代码
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和使用案例,并为代码添加了注释,希望对你有所帮助。

相关推荐
开开心心就好8 天前
吾爱大佬原创的文件时间修改工具
安全·智能手机·pdf·电脑·智能音箱·智能手表·1024程序员节
开开心心就好13 天前
近200个工具的电脑故障修复合集
安全·智能手机·pdf·电脑·consul·memcache·1024程序员节
数据皮皮侠AI15 天前
中国城市可再生能源数据集(2005-2021)|顶刊 Sci Data 11 种能源面板
大数据·人工智能·笔记·能源·1024程序员节
计算机毕业论文辅导17 天前
物联网实战:基于MQTT协议的智能家居数据传输系统设计与实现
1024程序员节
开开心心就好18 天前
支持批量处理的视频分割工具推荐
安全·智能手机·rust·pdf·电脑·1024程序员节·lavarel
liuyao_xianhui20 天前
Linux开发工具结尾 _make
linux·运维·服务器·数据结构·哈希算法·宽度优先·1024程序员节
学传打活22 天前
【边打字.边学昆仑正义文化】_21_爱的结晶(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
数据皮皮侠AI1 个月前
顶刊同款!中国地级市风灾风险与损失数据集(2000-2022)|灾害 / 环境 / 经济研究必备
大数据·人工智能·笔记·能源·1024程序员节
Fab1an1 个月前
Busqueda——Hack The Box 靶机
linux·服务器·学习·1024程序员节
技术专家1 个月前
Stable Diffusion系列的详细讨论 / Detailed Discussion of the Stable Diffusion Series
人工智能·python·算法·推荐算法·1024程序员节