Node.js backend: da dove iniziare, passo per passo
di Marcello Pasqui, fondatore di InsightLearn · 11 settembre 2026 · 9 min di lettura
Node.js è un ambiente di esecuzione JavaScript open source e multipiattaforma: esegue il motore V8 fuori dal browser e permette di scrivere il lato server nello stesso linguaggio del frontend. Per iniziare con il backend servono quattro cose, in quest'ordine: basi solide di JavaScript asincrono, il modello dell'event loop, un primo server senza framework e poi Express per rotte, middleware e API REST.
Chi cerca «Node.js backend» di solito ha già scritto un po' di JavaScript nel browser e vuole capire come si passa al server. Questa guida segue quel percorso: che cos'è Node.js e che cosa non è, quanto JavaScript serve davvero, quale versione installare, il modello mentale da acquisire prima di tutto il resto, il primo server in poche righe, Express e i principi con cui si progetta un'API. In fondo trovi un percorso in cinque passi collegato ai corsi del catalogo.
Che cos'è Node.js (e che cosa non è)
La documentazione ufficiale definisce Node.js un ambiente di esecuzione (runtime) JavaScript open source e multipiattaforma, che esegue il motore V8 — il cuore di Google Chrome — fuori dal browser. Non è quindi un linguaggio nuovo, e non è nemmeno un framework: il linguaggio resta JavaScript, e i framework come Express si installano sopra Node.js.
La caratteristica che conta per il backend è il modo in cui gestisce le richieste. Sempre secondo la documentazione, un'applicazione Node.js gira in un solo processo, senza creare un nuovo thread per ogni richiesta, e la libreria standard offre primitive di I/O asincrone che evitano di bloccare il codice. Quando Node.js legge dalla rete, da un database o dal filesystem, invece di restare fermo ad aspettare riprende l'operazione quando arriva la risposta. Il vantaggio pratico citato dalla documentazione è che chi scrive JavaScript per il browser può scrivere anche il codice lato server senza imparare un linguaggio completamente diverso.
Quanto JavaScript serve prima di iniziare
Non serve conoscere tutto il linguaggio, ma alcune parti sono imprescindibili perché il backend Node.js è quasi interamente asincrono:
- Funzioni e callback: molte API storiche di Node.js ricevono una funzione da chiamare a operazione conclusa.
- Promise e
async/await: sono la forma con cui oggi si scrive quasi tutto il codice asincrono leggibile. - Moduli: sapere come si importa e si esporta codice fra file (
requireoimport). - Oggetti e JSON: un'API backend riceve e restituisce quasi sempre dati in formato JSON.
Se su questi punti hai dubbi, conviene colmarli prima: è anche il requisito che il nostro corso Node.js Backend Development indica esplicitamente («conoscenza base JavaScript»).
Quale versione installare: perché LTS
Il primo dubbio pratico è quale versione scaricare. La pagina ufficiale sui rilasci è netta: le applicazioni in produzione dovrebbero usare solo versioni Active LTS o Maintenance LTS. LTS significa long-term support: secondo la stessa pagina, di norma garantisce la correzione dei bug critici per un totale di 30 mesi.
Ogni nuova versione principale resta sei mesi in stato Current, per dare tempo agli autori delle librerie di supportarla. Storicamente — fino a Node.js 26 — le versioni dispari smettevano di essere supportate dopo quei sei mesi e solo quelle pari passavano in LTS; la pagina annuncia che da Node.js 27 il ciclo diventa annuale e ogni versione principale passerà in LTS. Per chi inizia la regola resta semplice: installa la versione indicata come LTS sul sito ufficiale e impara su quella.
Il modello mentale: event loop e I/O non bloccante
È il concetto da capire prima di scrivere codice serio, perché spiega quasi tutti gli errori dei principianti. La documentazione Node.js chiama bloccante la situazione in cui l'esecuzione di altro JavaScript deve aspettare che finisca un'operazione non JavaScript, come un accesso al disco o alla rete: succede perché l'event loop non può continuare a eseguire JavaScript mentre è in corso un'operazione bloccante.
L'esecuzione di JavaScript in Node.js è a thread singolo, quindi la concorrenza dipende dalla capacità dell'event loop di eseguire le callback dopo aver completato altro lavoro. La documentazione porta un esempio concreto: se ogni richiesta a un server web richiede 50 ms e 45 di questi sono I/O verso il database che può essere svolto in modo asincrono, scegliere operazioni non bloccanti libera quei 45 ms per servire altre richieste.
Due conseguenze pratiche da tenere a mente:
- Evita i metodi sincroni nel codice che risponde alle richieste. Le varianti
...Syncdella libreria standard bloccano l'event loop per tutta la loro durata. - Non mescolare codice bloccante e non bloccante sulla stessa risorsa. Nell'esempio della documentazione un file viene letto in modo asincrono e subito dopo cancellato con
fs.unlinkSync(): la cancellazione con ogni probabilità avviene prima della lettura.
Il primo server, senza framework
Il «Hello World» più comune di Node.js, secondo la documentazione, è proprio un server web. Bastano il modulo http della libreria standard e poche righe:
const { createServer } = require('node:http');
const hostname = '127.0.0.1';
const port = 3000;
const server = createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Si salva come server.js e si avvia con node server.js. Vale la pena scriverlo almeno una volta a mano prima di passare a un framework: si vede che cosa fa davvero il server — riceve una richiesta, imposta codice di stato e intestazioni, scrive la risposta — e si capisce che cosa un framework come Express aggiunge sopra.
Express: routing e middleware
Express si presenta come un framework web per Node.js veloce, minimalista e che non impone una struttura. Aggiunge due concetti che ritroverai in quasi ogni backend Node.js:
- Routing: il modo in cui gli endpoint dell'applicazione rispondono alle richieste dei client. Si definisce con metodi dell'oggetto
appche corrispondono ai metodi HTTP, comeapp.get()eapp.post(). - Middleware: funzioni che hanno accesso alla richiesta (
req), alla risposta (res) e alla funzione successiva nel ciclo richiesta-risposta (next). Possono eseguire codice, modificare richiesta e risposta, chiudere il ciclo o passare il controllo alla successiva.
L'esempio minimo della documentazione Express:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
});
Il server risponde «Hello World!» alla radice / e con un 404 Not Found a ogni altro percorso. L'errore più tipico all'inizio riguarda i middleware: la documentazione avverte che, se un middleware non chiude il ciclo richiesta-risposta, deve chiamare next(), altrimenti la richiesta resta appesa.
Dalle rotte alle API REST
Con rotte e middleware si costruisce un'API. Le API REST organizzano i dati in risorse identificate da URL (per esempio /courses e /courses/42) e usano i metodi HTTP per dire che cosa fare su quella risorsa. La specifica di riferimento della semantica HTTP, la RFC 9110, fissa due proprietà che conviene conoscere fin dall'inizio:
| Metodo | Uso tipico in un'API | Sicuro | Idempotente |
|---|---|---|---|
| GET | Leggere una risorsa o un elenco | Sì | Sì |
| POST | Creare una risorsa o avviare un'elaborazione | No | No |
| PUT | Sostituire lo stato di una risorsa | No | Sì |
| DELETE | Eliminare una risorsa | No | Sì |
«Sicuro» significa che il metodo è pensato per sola lettura; «idempotente» che ripetere la stessa richiesta più volte ha lo stesso effetto voluto di una richiesta sola. In pratica: un GET non deve mai modificare dati, e un client può ritentare in sicurezza un PUT o un DELETE andato in timeout, mentre ritentare un POST può creare un duplicato. L'ultimo tassello è il database: nel nostro corso l'API viene collegata a MongoDB, ma i principi di rotte, metodi e middleware restano gli stessi con qualunque database.
Un percorso in cinque passi
Messi in fila, i passaggi di questa guida diventano un percorso di studio. Per ogni passo indichiamo il corso del catalogo InsightLearn che lo copre, con i dati dichiarati nella scheda del corso:
| Passo | Obiettivo | Corso collegato |
|---|---|---|
| 1 | JavaScript moderno: async/await, moduli, classi | JavaScript Moderno ES2024 — intermedio |
| 2 | Primi passi con Node.js, Express e MongoDB | Node.js Backend Development - Fondamenti Essenziali — principiante |
| 3 | API RESTful con Node.js, Express e MongoDB | Node.js Backend Development — intermedio, 6 lezioni |
| 4 | Collegare un frontend React al backend Node.js | Full Stack con React e Node — intermedio |
| 5 | Un progetto tuo: una piccola API con rotte, middleware e database | Nessun corso: è il passo che consolida gli altri |
Se parti da zero anche con il web, prima del passo 1 c'è Web Development con HTML, CSS e JavaScript, di livello principiante.
Fonti
- Introduction to Node.js — definizione, modello a processo singolo, primo server
- Overview of Blocking vs Non-Blocking — codice bloccante, concorrenza, rischi del codice misto
- Node.js Releases — fasi Current e LTS, raccomandazione per la produzione
- Express — Hello world e Routing — esempio minimo e definizione di routing
- Express — Using middleware — funzioni middleware e chiamata a
next() - RFC 9110 — HTTP Semantics — metodi sicuri e idempotenti
Domande frequenti
Node.js è un linguaggio di programmazione?
No. Node.js è un ambiente di esecuzione open source e multipiattaforma che esegue codice JavaScript fuori dal browser, usando il motore V8. Il linguaggio resta JavaScript: Node.js aggiunge la libreria standard per rete, file e processi che serve a scrivere un backend.
Quanto JavaScript devo sapere per iniziare con Node.js backend?
Servono le basi del linguaggio più la parte asincrona: funzioni e callback, Promise, async/await, moduli e oggetti JSON. Il backend Node.js è quasi interamente asincrono, quindi queste parti vanno capite prima di passare a Express.
Quale versione di Node.js conviene installare?
Una versione LTS. La pagina ufficiale dei rilasci indica che le applicazioni in produzione dovrebbero usare solo versioni Active LTS o Maintenance LTS, che di norma ricevono correzioni dei bug critici per 30 mesi. Imparare direttamente su una LTS evita di dover cambiare versione quando si passa a un progetto reale.
Express è obbligatorio per fare backend con Node.js?
No. Con il solo modulo http della libreria standard si può creare un server web in poche righe. Express è un framework minimalista che aggiunge routing e middleware, e per questo è un punto di partenza molto diffuso per costruire API REST; conviene però scrivere almeno una volta un server senza framework per capire che cosa Express fa per te.