Skip to content

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:

javascript
const x = 'x';
const y = 'y';
console.log(x, y);

Possiamo anche formattare frasi carine passando variabili e uno specificatore di formato. Ad esempio:

javascript
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:
javascript
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:

javascript
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:

javascript
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.

javascript
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():

javascript
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:

bash
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().

javascript
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:

javascript
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:

javascript
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:

javascript
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
    bar.tick();
    if (bar.complete) {
        clearInterval(timer);
    }
}, 100);