Eingabe über die Kommandozeile in Node.js akzeptieren
Wie macht man ein Node.js CLI Programm interaktiv?
Node.js stellt seit Version 7 das Modul readline
zur Verfügung, um genau dies zu tun: Eingabe von einem lesbaren Stream wie dem process.stdin
Stream zu erhalten, welcher während der Ausführung eines Node.js Programms die Terminaleingabe ist, eine Zeile nach der anderen.
const readline = require('node:readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Wie ist dein Name?", name => {
console.log('Hallo ' + name + '!');
rl.close();
});
Dieses Code-Snippet fragt nach dem Namen des Benutzers, und sobald der Text eingegeben und der Benutzer die Eingabetaste drückt, senden wir eine Begrüßung.
Die question()
Methode zeigt den ersten Parameter (eine Frage) und wartet auf die Benutzereingabe. Sie ruft die Callback-Funktion auf, sobald die Eingabetaste gedrückt wird.
In dieser Callback-Funktion schließen wir die readline-Schnittstelle.
readline
bietet mehrere andere Methoden, bitte sehen Sie sich diese in der oben verlinkten Paketdokumentation an.
Wenn Sie ein Passwort benötigen, ist es am besten, es nicht zurückzugeben, sondern stattdessen ein * Symbol anzuzeigen.
Der einfachste Weg ist die Verwendung des readline-sync Pakets, das in Bezug auf die API sehr ähnlich ist und dies standardmäßig handhabt. Eine vollständigere und abstraktere Lösung wird vom Inquirer.js Paket bereitgestellt.
Sie können es mit npm install inquirer
installieren, und dann können Sie den obigen Code wie folgt replizieren:
const inquirer = require('inquirer');
const questions = [
{
type: 'input',
name: 'name',
message: "Wie ist dein Name?"
}
];
inquirer.prompt(questions).then(answers => {
console.log('Hallo ' + answers.name + '!');
});
Mit Inquirer.js
können Sie viele Dinge tun, wie z. B. Multiple-Choice-Fragen stellen, Optionsfelder, Bestätigungen und mehr verwenden.
Es ist gut, alle Alternativen zu kennen, insbesondere die eingebauten, die von Node.js bereitgestellt werden. Wenn Sie jedoch die CLI-Eingabe auf die nächste Stufe heben möchten, ist Inquirer.js
eine optimale Wahl.