Menu

Cos'è Node.js? Il runtime JavaScript spiegato

Node.js è un runtime che esegue JavaScript fuori dal browser, sui server e nel terminale. Non è un linguaggio e non è un framework: è V8, più un event loop, più le API per file, rete e processi.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

Node.js è un runtime che esegue JavaScript fuori dal browser: su un server, in un terminale o come strumento da riga di comando. Non è un linguaggio di programmazione (il linguaggio è JavaScript) e non è un framework (Express è un framework che gira su Node.js). Unisce il motore V8 di Google, che esegue il JavaScript, a un event loop e ad API integrate per file, rete e processi che i browser non hanno.

Ha stampato il contenuto del file, la versione major (v24) e undefined per window, perché Node.js non ha una pagina web da darti. fs e process esistono solo in Node.js; esegui le stesse righe in una scheda del browser e la prima lancia un errore.

Node.js è un framework o un linguaggio?

Nessuno dei due. Il linguaggio è JavaScript. Node.js è il programma che lo esegue, come la JVM esegue Java o CPython esegue Python. I framework stanno sopra: Express, Fastify e NestJS sono librerie che installi in un progetto Node.js. La pagina Node.js vs JavaScript confronta i due nel dettaglio.

Sotto il cofano, Node.js è fatto di quattro parti:

  • V8, il motore JavaScript di Chrome. Trasforma il tuo codice in codice macchina e lo esegue.
  • libuv, una libreria C che fornisce l'event loop e fa il lavoro lento (disco, rete, timer) in background, poi restituisce il risultato alle tue callback.
  • Le API di Node: fs per i file, http per i server, path, process, crypto, events e altre, disponibili con require o import senza installare niente.
  • npm, il package manager incluso in Node.js, che ti dà accesso al registro di pacchetti più grande di qualsiasi linguaggio.

Come eseguire un file Node.js

Installa Node.js dal suo sito (scegli la versione LTS), poi controllalo da un terminale ed esegui un file:

node --version     # prints v24.x.x or similar
node app.js        # runs app.js and exits when it has nothing left to do
node               # with no file: an interactive prompt (the REPL)

Un programma finisce da solo quando non c'è più niente in attesa: nessun timer, nessun server aperto, nessuna lettura di file in corso. Per questo uno script termina mentre un web server resta acceso.

L'I/O non bloccante, l'idea di base

Node.js non aspetta il lavoro lento. Avvia una lettura di file o una richiesta di rete, continua a eseguire le righe successive e chiama la tua funzione quando il risultato è pronto.

Le due righe console.log dopo readFile sono state eseguite per prime, e il contenuto del file è arrivato per ultimo. È così che un solo processo Node.js serve migliaia di connessioni: mentre una richiesta aspetta il database, l'event loop fa andare avanti le altre.

Node.js e il browser

BrowserNode.js
GiraIn una pagina webIn un terminale o su un server
Hawindow, document, il DOM, localStoragefs, process, http, Buffer, require
Oggetto globalewindow (e globalThis)global (e globalThis)
File sul discoNessun accessoAccesso completo, con i permessi del tuo utente
setTimeout, console, fetch, URLSìSì

A cosa serve Node.js

  • Web server e API: backend REST e GraphQL, spesso con Express.
  • App in tempo reale: chat, dashboard in diretta e giochi multiplayer via WebSocket, dove molte connessioni restano aperte insieme.
  • Strumenti da riga di comando: npm stesso, Vite, ESLint, Prettier e il compilatore di TypeScript girano tutti su Node.js.
  • Script e automazione: rinominare file, chiamare API, migrare dati.

L'uso più comune è un server HTTP, e per il primo basta il modulo integrato http:

Il server ha risposto a GET /hello con il path ricevuto. Cambia il path nella barra della richiesta in /anything e invia: la risposta cambia di conseguenza, perché questo server gestisce ogni URL con un'unica funzione.

Quando scegliere Node.js

Scegli Node.js quando il lavoro consiste soprattutto nell'aspettare l'I/O (richieste, database, file) e vuoi un solo linguaggio su frontend e backend. È meno adatto ai lunghi calcoli pesanti per la CPU, come la codifica video o grandi calcoli numerici, perché un calcolo lungo blocca l'unico thread JavaScript e ogni altra richiesta deve aspettarlo.

Domande frequenti

Node.js è frontend o backend?

Soprattutto backend. Node.js gira su un server o sulla tua macchina, non nel browser di chi visita il sito. Anche gli sviluppatori frontend lo usano ogni giorno, perché strumenti come npm, Vite ed ESLint sono programmi Node.js.

Chi ha creato Node.js e quando?

Ryan Dahl ha pubblicato Node.js nel 2009. Oggi è mantenuto dalla OpenJS Foundation, con una nuova versione major ogni sei mesi, e le versioni pari hanno il supporto a lungo termine.

Devo conoscere JavaScript prima di Node.js?

Sì, almeno le basi: variabili, funzioni, oggetti, array e callback o promise. Node.js aggiunge API, non nuova sintassi, quindi tutto quello che impari sul linguaggio vale direttamente.

Node.js è single thread?

Il tuo JavaScript gira su un solo thread. Dietro le quinte Node.js usa un piccolo pool di thread per il file system, il DNS e parte della crittografia, così l'I/O lento non blocca il tuo codice mentre aspetta.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

Inizia