Output sulla riga di comando usando Node.js
Output di base usando il modulo console Node.js fornisce un modulo console che offre tantissimi modi utili per interagire con la riga di comando. È fondamentalmente lo stesso oggetto console che si trova nel browser.
Il metodo più basico e più usato è console.log()
, che stampa la stringa che gli si passa sulla console. Se si passa un oggetto, lo renderà come una stringa.
È possibile passare più variabili a console.log
, ad esempio:
const x = 'x';
const y = 'y';
console.log(x, y);
Possiamo anche formattare frasi carine passando variabili e uno specificatore di formato. Ad esempio:
console.log('Il mio %s ha %d orecchie', 'gatto', 2);
- %s formatta una variabile come stringa - %d formatta una variabile come numero - %i formatta una variabile solo come sua parte intera - %o formatta una variabile come oggetto Esempio:
console.log('%o', Number);
Cancella la console
console.clear()
cancella la console (il comportamento potrebbe dipendere dalla console utilizzata).
Conteggio degli elementi
console.count()
è un metodo utile. Prendi questo codice:
const x = 1;
const y = 2;
const z = 3;
console.count('Il valore di x è '+x+' ed è stato controllato..quante volte?');
console.count('Il valore di x è'+x+'ed è stato controllato..quante volte?');
console.count('Il valore di y è'+y+'ed è stato controllato..quante volte?');
Quello che succede è che console.count()
conterà il numero di volte che una stringa viene stampata e stamperà il conteggio accanto ad essa:
È possibile contare semplicemente mele e arance:
const oranges = ['arancia', 'arancia'];
const apples = ['solo una mela'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
Reimposta il conteggio
Il metodo console.countReset()
reimposta il contatore utilizzato con console.count()
.
Useremo l'esempio di mele e arance per dimostrarlo.
const oranges = ['arancia', 'arancia'];
const apples = ['solo una mela'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
console.countReset('arancia');
oranges.forEach(fruit => console.count(fruit));
Stampa la traccia dello stack
Potrebbero esserci casi in cui è utile stampare la traccia dello stack di chiamate di una funzione, magari per rispondere alla domanda: come hai raggiunto quella parte del codice?
Puoi farlo usando console.trace()
:
const function2 = () => console.trace();
const function1 = () => function2();
function1();
Questo stamperà la traccia dello stack. Questo è ciò che viene stampato se proviamo questo nel REPL di Node.js:
Trace
at function2 (repl:1:33)
at function1 (rep1:1:25)
at rep1:1:1
at ContextifyScript.Script.xunInThisContext (vm.js:44:33)
at REPLServer.defaultEval(repl.js:239:29)
at bound (domain.js:301:14)
at REPLServer.xunBound [as eval](domain.js:314:12)
at REPLServer.onLine (repl.js:440:10)
at emitone (events.js:120:20)
at REPLServer.emit (events.js:210:7)
Calcola il tempo impiegato
È possibile calcolare facilmente quanto tempo impiega una funzione per essere eseguita, usando time()
e timeEnd()
.
const doSomething = () => console.log('test');
const measureDoingSomething = () => {
console.time('doSomething()');
// fai qualcosa e misura il tempo impiegato
doSomething();
console.timeEnd('doSomething()');
};
measureDoingSomething();
stdout e stderr
Come abbiamo visto console.log
è ottimo per stampare messaggi nella Console. Questo è ciò che viene chiamato standard output, o stdout.
console.error
stampa sul flusso stderr.
Non apparirà nella console, ma apparirà nel log degli errori.
Colora l'output
È possibile colorare l'output del testo nella console utilizzando sequenze di escape. Una sequenza di escape è un insieme di caratteri che identifica un colore.
Esempio:
console.log('x1b[33ms/x1b[0m', 'hi!');
Puoi provarlo nel REPL di Node.js e stamperà hi! in giallo.
Tuttavia, questo è il modo a basso livello per farlo. Il modo più semplice per colorare l'output della console è usare una libreria. Chalk è una di queste librerie e, oltre a colorare, aiuta anche con altre funzionalità di stile, come rendere il testo in grassetto, corsivo o sottolineato.
Lo installi con npm install chalk
, poi puoi usarlo:
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));
Usare chalk.yellow
è molto più conveniente che cercare di ricordare i codici di escape e il codice è molto più leggibile.
Controlla il link del progetto pubblicato sopra per ulteriori esempi di utilizzo.
Creare una barra di progresso
progress
è un pacchetto fantastico per creare una barra di progresso nella console. Installalo usando npm install progress
.
Questo snippet crea una barra di progresso a 10 passi, e ogni 100ms viene completato un passo. Quando la barra si completa, cancelliamo l'intervallo:
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
bar.tick();
if (bar.complete) {
clearInterval(timer);
}
}, 100);