【问题标题】:How can I take console input from a user in node.js?如何在 node.js 中从用户那里获取控制台输入?
【发布时间】:2014-12-28 07:24:11
【问题描述】:

我尝试将 cloud9 作为全职 IDE 迁移,因为它似乎是我 chromebook 上的最佳选择。但是,我正在尝试制作一个需要用户输入文本的基本程序,但我教过的代码 var x = prompt("y"); 在 node.js 中似乎不起作用。

如何获取用户输入并将其作为变量存储在 node.js 中?

【问题讨论】:

    标签: javascript node.js cloud9-ide


    【解决方案1】:
    var readline = require('readline');
    
    var rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    });
    
    rl.question("What do you think of node.js? ", function(answer) {
      // TODO: Log the answer in a database
      console.log("Thank you for your valuable feedback:", answer);
    
      rl.close();
    });
    

    取自这里http://nodejs.org/api/readline.html#readline_readline

    更具体地说,将此代码填充到 app.js 文件中,然后运行以下命令

    node app.js
    

    然后回答上面的问题。

    会发生什么? require 语句公开了“readline”模块的公共方法,其中之一是“createInterface”方法。此方法将输入和输出作为选项。

    从外观上看,可以指定不同的输入和输出源,但在这种情况下,您使用的是全局节点 'process' 变量的 'stdin' 和 'stdout' 属性。这些指定控制台的输入和输出。

    接下来调用已创建的 readline 对象的 question 方法,并指定回调函数将用户输入显示回给用户。在 readline 上调用 'close' 以将控制权释放回调用者。

    【讨论】:

    • 重要说明:此方法是异步的。因此,必须在 function(answer){...} 中指定取决于输入参数的所有内容。
    【解决方案2】:

    看看Reading value from console, interactively

    您只能在浏览器中使用 JavaScript 的 BOM(浏览器对象模型)功能,而不能在 Node JS 中使用。

    【讨论】:

      猜你喜欢
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多