4

nodejsで一連のコマンドライン入力を同期的に受け入れる最良の方法は何ですか?

プログラムが印刷されるように

Enter Value for variable one

次に、ユーザーが値を入力すると、コマンドラインは次のような2番目の入力を要求する必要があります

Enter Value for variable two

等々

4

2 に答える 2

3

これを行う最も簡単な方法は、IMHO がユーザーに「質問」を表示し、ユーザーの回答を待つことです。これらの質問は、常に同じ (">>" のようなプロンプト) の場合もあれば、異なる場合もあります (たとえば、いくつかの変数を尋ねたい場合)。

これらの質問を表示するには、stdioを使用できます。これは、標準の入出力管理を簡素化するモジュールであり、その主な機能の 1 つはまさにあなたが望むものです。

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
(出典:nodei.co

于 2014-08-15T02:05:33.057 に答える
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
    }
});
于 2012-11-24T06:47:37.067 に答える