Come utilizzare la REPL di Node.js
Il comando node
è quello che utilizziamo per eseguire i nostri script Node.js:
node script.js
Se eseguiamo il comando node
senza alcuno script da eseguire o senza argomenti, avviamo una sessione REPL:
node
NOTA
REPL sta per Read Evaluate Print Loop (Leggi Valuta Stampa Ripeti), ed è un ambiente di linguaggio di programmazione (fondamentalmente una finestra della console) che accetta una singola espressione come input dell'utente e restituisce il risultato alla console dopo l'esecuzione. La sessione REPL fornisce un modo conveniente per testare rapidamente codice JavaScript semplice.
Se lo provi ora nel tuo terminale, questo è ciò che accade:
> node
>
Il comando rimane in modalità idle e attende che inseriamo qualcosa.
TIP
se non sei sicuro di come aprire il tuo terminale, cerca su Google "Come aprire il terminale su tuo-sistema-operativo".
La REPL sta aspettando che inseriamo del codice JavaScript, per essere più precisi.
Inizia semplicemente e inserisci:
> console.log('test')
test
undefined
>
Il primo valore, test
, è l'output che abbiamo detto alla console di stampare, poi otteniamo undefined
che è il valore di ritorno dell'esecuzione di console.log()
. Node ha letto questa riga di codice, l'ha valutata, ha stampato il risultato e poi è tornato ad aspettare altre righe di codice. Node eseguirà un ciclo attraverso questi tre passaggi per ogni parte di codice che eseguiamo nella REPL fino a quando non usciamo dalla sessione. Ecco da dove la REPL ha preso il suo nome.
Node stampa automaticamente il risultato di qualsiasi riga di codice JavaScript senza la necessità di istruirlo a farlo. Ad esempio, digita la riga seguente e premi invio:
> 5==5
true
>
Nota la differenza negli output delle due righe precedenti. La REPL di Node ha stampato undefined
dopo aver eseguito console.log()
, mentre d'altra parte, ha appena stampato il risultato di 5== '5'
. È necessario tenere presente che il primo è solo un'istruzione in JavaScript, e il secondo è un'espressione.
In alcuni casi, il codice che si desidera testare potrebbe richiedere più righe. Ad esempio, supponiamo di voler definire una funzione che genera un numero casuale, nella sessione REPL digita la riga seguente e premi invio:
function generateRandom()
...
La REPL di Node è abbastanza intelligente da determinare che non hai ancora finito di scrivere il tuo codice, e passerà in una modalità multi-riga per consentirti di digitare più codice. Ora completa la definizione della tua funzione e premi invio:
function generateRandom()
...return Math.random()
La variabile speciale:
Se dopo del codice si digita _
, verrà stampato il risultato dell'ultima operazione.
Il tasto freccia su:
Se si preme il tasto freccia su, si avrà accesso alla cronologia delle righe di codice precedenti eseguite nella sessione REPL corrente e persino in quelle precedenti.
Comandi Dot
La REPL ha alcuni comandi speciali, tutti che iniziano con un punto .
. Sono:
.help
: mostra la guida ai comandi dot..editor
: abilita la modalità editor, per scrivere codice JavaScript multiriga con facilità. Una volta in questa modalità, immetterectrl-D
per eseguire il codice scritto..break
: quando si immette un'espressione multiriga, l'inserimento del comando.break
interromperà l'ulteriore input. Analogo alla pressione dictrl-C
..clear
: ripristina il contesto REPL a un oggetto vuoto e cancella qualsiasi espressione multiriga attualmente in input..load
: carica un file JavaScript, relativo alla directory di lavoro corrente..save
: salva tutto ciò che è stato immesso nella sessione REPL in un file (specificare il nome del file)..exit
: esce dalla repl (analogo alla pressione dictrl-C
due volte).
La REPL sa quando si sta digitando un'istruzione multiriga senza bisogno di invocare .editor
. Ad esempio, se si inizia a digitare un'iterazione come questa:
[1, 2,3].foxEach(num=>{
e si preme invio, la REPL passerà a una nuova riga che inizia con 3 punti, indicando che ora è possibile continuare a lavorare su quel blocco.
1... console.log (num)
2...}
Se si digita .break
alla fine di una riga, la modalità multiriga si interromperà e l'istruzione non verrà eseguita.
Eseguire REPL da un file JavaScript
Possiamo importare la REPL in un file JavaScript usando repl
.
const repl = require('node:repl')
Usando la variabile repl
possiamo eseguire varie operazioni. Per avviare il prompt dei comandi REPL, digitare la seguente riga:
repl.start()
Eseguire il file nella riga di comando.
node repl.js
È possibile passare una stringa che viene visualizzata all'avvio della REPL. L'impostazione predefinita è '>' (con uno spazio finale), ma possiamo definire un prompt personalizzato.
// un prompt in stile Unix
const local = repl.start('$ ')
È possibile visualizzare un messaggio durante l'uscita dalla REPL
local.on('exit', () => {
console.log('exiting repl')
process.exit()
})
È possibile trovare maggiori informazioni sul modulo REPL nella documentazione repl.