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.
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.
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:
Você pode inspecionar os objetos globais aos quais tem acesso digitando global. e pressionando tab:
Se depois de algum código você digitar _, isso vai imprimir o resultado da última operação.
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.
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.breakinterromperá 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.
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();
});
