在nodejs中同步接受命令行输入的最佳方法?

时间:2012-11-24 06:40:10

标签: node.js

同步接受nodejs中一系列命令行输入的最佳方法是什么?

就像打印程序一样

Enter Value for variable one

然后用户输入值,之后命令行应该请求第二个输入,如

Enter Value for variable two

等等

2 个答案:

答案 0 :(得分:3)

最简单的方法是做到这一点,恕我直言正在展示"问题"给用户并等待他的答案。这些问题可以始终相同(例如">>")或者可能不同(例如,如果您想要求某些变量)。

要显示这些问题,您可以使用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创作者。 : - )

NPM

答案 1 :(得分:0)

根据您的具体需求,您可以创建自己的REPL。

http://nodejs.org/api/repl.html

只需使用repl.start()的选项致电prompt,然后使用您自己的自定义evalwriter回调。

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
    }
});