📌  相关文章
📜  如何从用户 nodejs 获取输入 - Javascript (1)

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

如何从用户 nodejs 获取输入 - Javascript

在 nodejs 中获取用户输入的方法有很多种,下面将介绍几种最常用、最简单的方法。

通过 stdin 监听事件获取用户输入

nodejs 中,可以通过 stdin 对象监听 data 事件获取用户输入的数据。代码示例如下:

process.stdin.on('data', function (data) {
  console.log('您输入了:' + data);
});

其中 data 是用户输入的数据,这里简单地将它打印输出了。请注意,data 返回的是一个缓冲区,需要使用 toString() 方法将其转化为字符串。可以在用户输入任何内容之前添加提示信息。

process.stdout.write('请输入您的姓名:');

process.stdin.on('data', function (data) {
  console.log('您输入的姓名是:' + data.toString());
});
通过 readline 获取用户输入

除了监听 stdindata 事件,还可以使用 readline 模块来获取用户输入。readline 模块封装了 stdinstdout 的实现,提供了更方便的用户输入输出接口。

示例代码如下:

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

rl.question('请输入您的姓名:', function (answer) {
  console.log('您输入的姓名是:' + answer);
  rl.close();
});

这里通过 rl.question 函数输出提示信息,并通过回调函数获取用户输入。rl.close 则表示结束输入。

如果需要多次获取用户输入,可以使用 rl.prompt() 输出提示信息,使用 rl.on('line', callback) 监听用户输入事件,例如:

rl.setPrompt('请输入您的姓名:');
rl.prompt();

rl.on('line', function (line) {
  console.log('您输入的姓名是:' + line);
  rl.setPrompt('请输入您的年龄:');
  rl.prompt();
});

rl.on('close', function () {
  console.log('输入结束');
  process.exit(0);
});
通过 fs 模块读取文件内容作为用户输入

除了从控制台获取用户输入,还可以从文件中读取数据作为用户输入。可以使用 fs 模块中的 readFile 函数来读取文件中的数据,代码示例如下:

const fs = require('fs');
const rl = readline.createInterface({
  input: fs.createReadStream('data.txt')
});

rl.on('line', function (line) {
  console.log(line);
});

rl.on('close', function () {
  console.log('读取结束');
});

这里使用 fs.createReadStream 函数创建一个从文件中读取数据的可读流,并将其作为 readline 的输入流。readline 会每行读取数据,并触发 line 事件,我们可以在 line 事件的回调函数中处理每行的数据。

总结

通过本文,我们了解了如何在 nodejs 中从用户获取输入。通过监听 stdin 事件、使用 readline 模块以及从文件中获取数据,我们可以轻松地实现各种类型的用户输入场景。我们也可以根据实际需要对以上方法进行扩展和组合,从而满足更复杂的需求。