Node.js 在nodejs中同步接受命令行输入的最佳方法?
同步接受nodejs中一系列命令行输入的最佳方式是什么 就像程序会打印一样Node.js 在nodejs中同步接受命令行输入的最佳方法?,node.js,Node.js,同步接受nodejs中一系列命令行输入的最佳方式是什么 就像程序会打印一样 Enter Value for variable one 然后用户输入值,然后命令行应该请求第二次输入,如 Enter Value for variable two 依此类推,根据您的具体需要,您可以创建自己的REPL 只需调用带有提示选项的repl.start(),并使用您自己的自定义eval和writer回调 repl.start({ prompt: 'Enter value: ', eval:
Enter Value for variable one
然后用户输入值,然后命令行应该请求第二次输入,如
Enter Value for variable two
依此类推,根据您的具体需要,您可以创建自己的REPL 只需调用带有提示选项的
repl.start()
,并使用您自己的自定义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
}
});
最简单的方法是,IMHO向用户显示“问题”并等待他的答案。这些问题可以是相同的(类似“>>”的提示),也可以是不同的(例如,如果您想询问一些变量) 要显示这些问题,您可以使用。它是一个简化标准输入/输出管理的模块,其主要功能之一正是您想要的:
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
creator.:-)
Hi@Brad,感谢您的回复,我正在使用以下内容,无法打印数据var repl=require(“repl”);repl.start({prompt:'Enter value:',eval:function(cmd,context,filename,callback){callback(/*返回值在这里*/);},writer:function(data){console.log('data is'+data);});但是我得到的数据是未定义的,而且我无法理解repl.start()中的每个选项都做了什么。是否在某个地方对此进行了有效的演示?@nlingutla,如果希望在writer函数中获得可用的数据,则需要使用数据调用回调。如果您接受输入,但不需要任何数据,请将其保留为未定义,并更改writer函数的输出。有关所有选项的说明,请参阅。你在哪些选项上有困难?我不相信那里有示例代码。问题是,对于同步方法,stdio使用回调进行异步执行。