Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Latest commit

 

History

History
59 lines (42 loc) · 2.57 KB

File metadata and controls

59 lines (42 loc) · 2.57 KB
title accept-input-from-the-command-line-in-nodejs
displayTitle Aceitar entrada a partir da linha de comando na Node.js
description Como criar um programa interativo de interface da linha de comando da Node.js usando o módulo embutido readline da Node.js
authors flaviocopes, MylesBorins, fhemberger, LaRuaNa, ahmadawais, nazarepiedady
category learn

Como criar um programa interativo de interface da linha de comando da Node.js?

Desde a versão 7 a Node.js fornece o módulo readline para realizar exatamente isto: receber a entrada a partir de uma corrente legível tal como a corrente de process.stdin, que durante a execução de um programa de Node.js é a entrada de terminal, em uma linha de cada vez:

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

readline.question(`What's your name?`, name => {
  console.log(`Hi ${name}!`);
  readline.close();
});

Este pedaço de código pede o nome do utilizador, e uma vez introduzido o texto e pressionada a tecla enter pelo utilizador, enviamos uma saudação.

O método question() mostra o primeiro parâmetro (uma questão) e espera pela entrada do utilizador. Ele chama uma função de resposta uma vez pressionada a tecla enter.

Na função de resposta, fechamos a interface de readline.

O readline oferece vários outros métodos, consulte-os na documentação do pacote cuja ligação foi apresentada acima.

Se precisares de exigir uma senha, é melhor não ecoá-la de volta, mas invés disso mostrar um símbolo *.

O maneira mais simples é usar o pacote readline-sync que é muito similar em termos de API e manipula isto fora da caixa.

Uma solução mais completa e abstrata é fornecida pelo pacote inquirer.js.

Tu podes instalá-lo usando npm install inquirer, e então podes replicar o código acima desta maneira:

const inquirer = require('inquirer');

const questions = [
  {
    type: 'input',
    name: 'name',
    message: "What's your name?",
  },
];

inquirer.prompt(questions).then(answers => {
  console.log(`Hi ${answers.name}!`);
});

O inquirer.js permite-te fazer muitas coisas como pedir várias escolhas, ter botões de rádio, confirmações, e muito mais.

Vale a pena conhecer todas as alternativas, especialmente aquelas embutidas fornecidas pela Node.js, mas se planeias levar a entrada da interface da linha de comando para o próximo nível, inquirer.js é uma escolha ótima.