Output alla 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ù basilare e utilizzato è console.log()
, che stampa sulla console la stringa che gli si passa. Se si passa un oggetto, lo renderizzerà come una stringa.
Si possono passare più variabili a console.log
, per esempio:
const x = 'x';
const y = 'y';
console.log(x, y);
Possiamo anche formattare frasi carine passando variabili e uno specificatore di formato. Per 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 parte intera - %o formatta una variabile come oggetto Esempio:
console.log('%o', Number);
Pulisci la console
console.clear()
pulisce la console (il comportamento potrebbe dipendere dalla console utilizzata).
Conteggio degli elementi
console.count()
è un metodo pratico. 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?');
Ciò che accade è che console.count()
conterà il numero di volte in cui una stringa viene stampata e stamperà il conteggio accanto ad essa:
Puoi semplicemente contare mele e arance:
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
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 delle mele e delle arance per dimostrarlo.
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
console.countReset('orange');
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 sono arrivato a questa 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
Puoi facilmente calcolare 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 necessario
doSomething();
console.timeEnd('doSomething()');
};
measureDoingSomething();
stdout e stderr
Come abbiamo visto, console.log
è ottimo per stampare messaggi nella Console. Questo è ciò che viene chiamato output standard o stdout.
console.error
stampa nel flusso stderr.
Non apparirà nella console, ma apparirà nel registro degli errori.
Colora l'output
Puoi colorare l'output del tuo testo nella console usando sequenze di escape. Una sequenza di escape è un insieme di caratteri che identifica un colore.
Esempio:
console.log('x1b[33ms/x1b[0m', 'ciao!');
Puoi provarlo nel REPL di Node.js e stamperà ciao! in giallo.
Tuttavia, questo è il modo di 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
, quindi puoi usarlo:
const chalk = require('chalk');
console.log(chalk.yellow('ciao!'));
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.
Crea una barra di progresso
progress
è un pacchetto fantastico per creare una barra di progresso nella console. Installalo usando npm install progress
.
Questo frammento crea una barra di progresso a 10 passi, e ogni 100ms un passo viene completato. Quando la barra è 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);