Skip to content

Latest commit

 

History

History
175 lines (112 loc) · 6.28 KB

File metadata and controls

175 lines (112 loc) · 6.28 KB

Como usar o REPL do Node.js

Índice

O comando node é aquele que usamos para executar nossos scripts Node.js:

node script.js

Se executarmos o comando node sem nenhum script para executar ou sem argumentos, inciaremos uma sessão REPL:

node

Nota: REPL significa Read Evaluate Print Loop e é um ambiente de linguagem de programação (basicamente uma janela de console) que recebe uma expressão única como entrada do usuário e retorna o resultado de volta ao console após a execução. A sessão REPL fornece uma maneira conveniente de testar rapidamente o código JavaScript simples.

Se você testar agora no seu terminal, isso que acontece:

> node
>

O comando fica no modo ocioso e espera que insiramos algo.

Dica: se você não tiver certeza de como abrir seu terminal, pesquise no Google "Como abrir o terminal em ".

O REPL está esperando que insiramos algum código JavaScript, para ser mais preciso.

Comece simples como por exemplo:

> console.log('test')
test
undefined
>

O primeiro valor, test, é a saída que dissemos ao console para imprimir, então obtemos undefined, que é o valor de retorno da execução de console.log(). O Node leu essa linha de código, avaliou, imprimiu o resultado e voltou a esperar por mais linhas de código. O Node percorrerá essas três etapas para cada pedaço de código que executarmos no REPL até sairmos da sessão. Foi aí que o REPL recebeu seu nome.

O Node imprime automaticamente o resultado de qualquer linha de código JavaScript sem a necessidade de instruí-lo a fazê-lo. Por exemplo, digite a seguinte linha e pressione enter:

> 5 === '5'
false
>

Observe a diferença nas saídas das duas linhas acima. O Node REPL imprimiu undefined após executar console.log(), enquanto por oiutro lado, imprimiu apenas o resultado de 5 === '5'. Você precisa ter em mente que o primeiro é apenas uma declaração em JavaScript e o último é uma expressão.

Em alguns casos, o código que você deseja testar pode precisar de várias linhas. Por exemplo, digamos que você queira definir uma função que gere um número aleatório, na sessão REPL digite na linha a seguir e pressione enter:

function generateRandom() {
...

O Node REPL é inteligente o suficiente para determinar que você ainda não terminou de escrever seu código e entrará em um modo de várias linhas para você digitar mais código. Agora termine sua definição de função e pressione enter:

function generateRandom() {
...return Math.random()
}
undefined

O Node sairá do modo de várias linhas e imprimirá undefined, pois não há valor retornado. Este modo de várias linhas é limitado. O Node oferece um editor com mais recursos dentro do REPL. Discutimos isso abaixo em comando Dot.

Use o tab para completar automaticamente

O legal do REPL é que ele é interativo.

Conforme você escreve seu código, se você pressionar a tecla tab, o REPL tentará completar automaticamente o que você escreveu para corresponder a uma variável já definida ou predefinda.

Explorando objetos JavaScript

Tente inserir o nome de uma classe JavaScript, como Number, adicione um ponto e pressione tab.

O REPL imprimirá todas as propriedades e métodos que você pode acessar nessa classe:

Explorando objetos globais

Você pode inspecionar os objetos globais aos quais tem acesso digitando global. e pressionando tab:

Variáveis especial _

Se depois de algum código você digitar _, isso vai imprimir o resultado da última operação.

A tecla de seta para cima

Se você pressionar a tecla de seta para cima, terá acesso ao histórico das linhas de código anteriores executadas nas sessões REPL atuais e até anteriores.

Comandos com . ou dot

O REPL possui alguns comandos especiais, todos começando com um ponto ..

  • .help: mostra um help dos comandos de ponto.
  • .editor: habilita o modo de editor, para escrever código JavaScript de várias linhas com facilidade. Quando estiver nesse modo, digite ctrl-D para executar o código que você escreveu.
  • .break: ao inserir uma expressão de várias linhas, inserir o comando .break interromperá a entrada adicional. O mesmo que pressionar ctrl-C.
  • .clear: redefine o contexto REPL para um objeto vazio e limpa qualquer expressão de várias linhas que esteja sendo ou já tenha sido inserida no momento.
  • .load: carrega um arquivo JavaScript, relativo ao diretório atual em que está.
  • .save: salva tudo o que você digitou na sessão REPL em um arquivo (especifique o nome do arquivo).
  • .exit: sai do REPL (o mesmo que pressionar ctrl-C duas vezes).

O REPL sabe quando você está digitando uma instrução de várias linhas sem a necessidade de invocar .editor.

Por exemplo, se você começar a digitar uma iteração como esta:

[1, 2, 3].forEach(num => {

e você pressionar enter, o REPL vai para uma nova linha que começa com 3 pontos, indicando que agora você pode continuar trabalhando naquele bloco.

... console.log(num);
.... })

Se voce digitar .break no final de uma liinha, o modo multlinha será interrompido e a instrução não será executada.

Executando o REPL em um arquivo JavaScript

Nós podemos importar no REPL um arquivo JavaScript usando repl.

const repl = require('repl');

Usando a variável repl podemos realizar várias operações. Para iniciar o prompt de comandos REPL, digite a seguinte linha.

const local = repl.start(prompt);

repl.start() inicia o ambiente REPL e o prompt é uma string que aceita o prompt que mostra quando o REPL é iniciado. O padrão é '>', mas podemos definir prompts personalizados.

Execute o arquivo na linha de comando.

node repl.js
> const n = 10;

Você pode exibir uma mensagem ao sair do REPL

local.on('exit', () => {
  console.log('exiting repl');
  process.exit();
});