18

我只想简单地从键盘读取文本并将其存储到变量中。因此对于:

var color = 'blue'

我希望用户从键盘提供颜色输入。谢谢!

4

7 回答 7

19

如果您不需要异步的东西,我也会建议使用 readline-sync 模块。

# npm install readline-sync

const readline = require('readline-sync');

let name = readline.question("What is your name?");

console.log("Hi " + name + ", nice to meet you.");
于 2016-05-27T02:09:30.770 回答
10

Node 有一个内置的 API 用于这个......

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('Please enter a color? ', (value) => {
    let color = value
    console.log(`You entered ${color}`);
    rl.close();
});
于 2017-05-03T06:41:28.630 回答
5

NodeJS平台上有三种解决方案

  1. 对于异步用例需要,使用Node API:readline

喜欢:(https://nodejs.org/api/readline.html

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('What do you think of Node.js? ', (answer) => {
  // TODO: Log the answer in a database
  console.log(`Thank you for your valuable feedback: ${answer}`);

  rl.close();
});
  1. 对于同步用例需要,使用NPM 包:readline-sync就像:( https://www.npmjs.com/package/readline-sync )

    var readlineSync = require('readline-sync');

    // 等待用户响应。var userName = readlineSync.question('我可以知道你的名字吗?'); console.log('你好' + 用户名 + '!');

  2. 对于所有一般用例需要,请使用 **NPM 包:全局包:进程:** 喜欢:(https://nodejs.org/api/process.html

将输入作为 argv:

// print process.argv
process.argv.forEach((val, index) => 
{
  console.log(`${index}: ${val}`);
});
于 2018-04-28T00:12:54.850 回答
3

您可以为此使用模块“readline”:http ://nodejs.org/api/readline.html - 手册中的第一个示例演示了如何按照您的要求进行操作。

于 2013-11-01T00:03:37.267 回答
3

您可以为此使用stdio 。简单如下:

import { ask } from 'stdio';
const color = await ask('What is your keyboard color?');

如果您决定只接受一些预定义的答案,则此模块包括重试:

import { ask } from 'stdio';
const color = await ask('What is your keyboard color?', { options: ['red', 'blue', 'orange'], maxRetries: 3 });

看看stdio,它包括其他可能对您有用的功能(如命令行参数解析、标准输入一次或按行读取......)。

于 2014-08-17T07:32:54.510 回答
3

我们也可以使用 NodeJS 的核心标准输入功能。 ctrl+D用于结束标准输入数据读取。

process.stdin.resume();
process.stdin.setEncoding("utf-8");
var input_data = "";

process.stdin.on("data", function(input) {
  input_data += input; // Reading input from STDIN
  if (input === "exit\n") {
    process.exit();
  }
});

process.stdin.on("end", function() {
  main(input_data);
});

function main(input) {
  process.stdout.write(input);
}
于 2018-08-27T14:31:25.653 回答
-3

如果我了解您的需求,那应该这样做:

html:

<input id="userInput" onChange="setValue()" onBlur="setValue()">

javascript:

function setValue(){
   color=document.getElementById("userInput").value;
   //do something with color
}

如果您不需要在每次输入更改时都执行某项操作,则只要您想使用“颜色”执行某项操作,就可以获取输入:

html:

<input id="userInput">

javascript:

color=document.getElementById("userInput").value;
于 2013-11-01T00:05:10.337 回答