Nodejs: Comment saisir du texte sur un clavier et le stocker dans une variable en javascript?

Je voudrais juste quelque chose de simple à lire le texte d’un clavier et le stocker dans une variable. Donc pour:

var color = 'blue' 

Je voudrais que l’utilisateur fournisse une entrée pour la couleur du clavier. Je vous remercie!

Je suggérerais également le module readline-sync si vous n’avez pas besoin de quelque chose d’asynchrone.

 # npm install readline-sync var readline = require('readline-sync'); var name = readline.question("What is your name?"); console.log("Hi " + name + ", nice to meet you."); 

Le noeud a une API intégrée pour cela …

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

Vous pouvez utiliser le module ‘readline’ pour cela: http://nodejs.org/api/readline.html – le premier exemple du manuel montre comment faire ce que vous avez demandé.

Vous pouvez utiliser stdio pour cela. C’est aussi simple que suit:

 var stdio = require('stdio'); stdio.question('What is your keyboard color?', function (err, color) { // Do whatever you want with "color" }); 

Ce module inclut des tentatives si vous décidez d’accepter uniquement certaines réponses prédéfinies:

 var stdio = require('stdio'); stdio.question('What is your keyboard color?', ['red', 'blue', 'orange'], function (err, color) { // Do whatever you want with "color" }); 

Jetez un coup d’oeil à stdio , il inclut d’autres fonctionnalités qui pourraient vous être utiles (comme l’parsing syntaxique des arguments de la ligne de commande, la lecture standard des entrées à la fois ou par lignes …). Je suis le créateur de stdio et je viens de publier la version 0.2.0. 🙂

MNP

Il existe trois solutions pour cela sur la plate-forme NodeJS

//////////////////////////////////////////////////////// //////////////

  • 1) Solution-1: en cas de besoin en cas d’utilisation asynchrone, utilisez l’ API du noeud: readline //////////////////////////////// ///////////////////////////////////

J’aime: ( https://nodejs.org/api/readline.html )

const readline = require (‘readline’);

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

rl.question (‘Que pensez-vous de Node.js?’, (réponse) => {// TODO: enregistrez la réponse dans une firebase database console.log ( Thank you for your valuable feedback: ${answer} );

rl.close (); });

//////////////////////////////////////////////////////// //////////////

  • 2) Solution 2: pour les cas d’utilisation synchrones, utilisez le package NPM: readline-sync //////////////////////////////// /////////////////////////////////////

J’aime: ( https://www.npmjs.com/package/readline-sync )

var readlineSync = require (‘readline-sync’);

// Attend la réponse de l’utilisateur. var userName = readlineSync.question (‘Puis-je avoir votre nom?’); console.log (‘Hi’ + nom d’utilisateur + ‘!’);

//////////////////////////////////////////////////////// //////////////

  • 3) Solution-3: Pour tous les cas d’utilisation généraux, utilisez ** Package NPM: package global: process: **

//////////////////////////////////////////////////////// //////////////

J’aime: ( https://nodejs.org/api/process.html )

Pour prendre entrée comme argument:

// print process.argv process.argv.forEach ((val, index) => {console.log ( ${index}: ${val} );});

Nous pouvons également utiliser la fonctionnalité d’entrée standard de base de NodeJS. ctrl+D pour terminer la lecture des données d’entrée standard.

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

Si j’ai compris votre besoin, cela devrait le faire:

html:

  

javascript:

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

si vous n’avez pas besoin de faire quelque chose chaque fois que l’entrée change, vous pouvez simplement obtenir l’entrée chaque fois que vous voulez faire quelque chose avec ‘couleur’:

html:

  

javascript:

 color=document.getElementById("userInput").value;