在 nodejs 中同步接受一系列命令行输入的最佳方法是什么?
就像程序会打印一样
Enter Value for variable one
然后用户输入值,之后命令行应该要求第二个输入,例如
Enter Value for variable two
等等
在 nodejs 中同步接受一系列命令行输入的最佳方法是什么?
就像程序会打印一样
Enter Value for variable one
然后用户输入值,之后命令行应该要求第二个输入,例如
Enter Value for variable two
等等
最简单的方法是,恕我直言,向用户显示“问题”并等待他的回答。这些问题可能总是相同的(例如“>>”之类的提示),也可能不同(例如,如果您想询问一些变量)。
要显示这些问题,您可以使用stdio。它是一个简化标准输入/输出管理的模块,其主要功能之一正是您想要的:
var stdio = require('stdio');
stdio.question('What is your name?', function (err, name) {
stdio.question('Are you male or female?', ['male', 'female'], function (err, sex) {
console.log('Your name is "%s". You are "%s"', name, sex);
});
});
如果您运行之前的代码,您将看到如下内容:
What is your name?: John
Are you male or female? [male/female]: female
Your name is "john". You are "female"
stdio
如果您指定一组可能的答案,则包括对重试的支持。否则用户将能够编写他们想要的任何内容。
PD:我是stdio
创造者。:-)
(来源:nodei.co)
根据您的具体需求,您可以创建自己的 REPL。
http://nodejs.org/api/repl.html
只需repl.start()
使用 for 的选项调用prompt
,并使用您自己的自定义eval
和writer
回调。
repl.start({
prompt: 'Enter value: ',
eval: function (cmd, context, filename, callback) {
// Do something
callback(/* return value goes here */);
},
writer: function (data) {
// echo out data to the console here
}
});