📅  最后修改于: 2023-12-03 15:23:48.474000             🧑  作者: Mango
在 nodejs 中获取用户输入的方法有很多种,下面将介绍几种最常用、最简单的方法。
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());
});
除了监听 stdin
的 data
事件,还可以使用 readline
模块来获取用户输入。readline
模块封装了 stdin
和 stdout
的实现,提供了更方便的用户输入输出接口。
示例代码如下:
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
模块中的 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
模块以及从文件中获取数据,我们可以轻松地实现各种类型的用户输入场景。我们也可以根据实际需要对以上方法进行扩展和组合,从而满足更复杂的需求。