Cos’è Node.js
Prima di iniziare: le parole della lezione
- Runtime
- Ambiente che esegue un programma e gli fornisce servizi: Node.js è il runtime, JavaScript è il linguaggio del codice.
- V8
- Motore JavaScript usato anche da Chrome: esegue JavaScript e può compilarlo in codice macchina. Il codice non viene prima tradotto in C++.
- Frontend e backend
- Il frontend è la parte con cui interagisce l’utente, spesso nel browser; il backend gestisce richieste, regole e dati sul server.
- API, I/O e thread
- API significa interfaccia di programmazione: funzioni e regole con cui usare un componente. I/O significa input/output, come leggere un file o scambiare dati in rete. Un thread è un flusso di esecuzione di istruzioni.
- DOM e framework
- Il DOM è la rappresentazione della pagina HTML manipolabile dal browser. Un framework è una struttura software che organizza lo sviluppo: Express sarà il framework web di questa guida.
Node.js è un ambiente di esecuzione JavaScript fuori dal browser. Usa il motore V8 e mette a disposizione API lato server: file system, rete, processi e altro. Non è un linguaggio diverso da JavaScript, né un framework web.
- Browser: dispone di DOM,
window, interfaccia grafica e Web API. - Node.js: dispone di
process, file system, server HTTP e API di sistema. Non esiste un DOM di default. - Event loop: permette di coordinare molte operazioni I/O senza bloccare il thread JavaScript mentre si aspetta un risultato. Questo non significa che qualsiasi calcolo sia automaticamente parallelo.
console.log('Ciao da Node.js');
console.log('Versione:', process.version);
console.log('Sistema operativo:', process.platform);
Esempio pratico. Un server può avviare la lettura di un file e nel frattempo continuare a gestire altre richieste. Se invece esegue un ciclo CPU molto pesante sul thread principale, le altre richieste possono rallentare.
Chi fa cosa, e perché
Nella metafora della banca del testo, lo sportellista è il thread JavaScript: riceve le richieste e avvia le operazioni. Il lavoro che richiede attesa può essere affidato al sistema operativo o ad altri componenti di Node; quando è pronto, il codice riprende a elaborarne il risultato. Questo permette di servire più utenti senza tenere fermo lo sportello per ogni attesa.
Il server è il programma che offre un servizio; il computer che lo ospita viene spesso chiamato anch’esso server. Il client è il programma che lo contatta, ad esempio un browser. Node può eseguire anche strumenti da terminale, senza creare alcun server. V8 esegue JavaScript, Node fornisce le API, il sistema operativo gestisce risorse come file e rete.
Un altro esempio guidato
// ambiente.cjs — avvio: node ambiente.cjs
console.log('JavaScript:', [1, 2, 3].map(n => n * 2));
console.log('API Node:', process.version);
console.log('DOM disponibile?', typeof document);
Come leggerlo e risultato atteso. La prima riga stampa un array con 2, 4, 6; map trasforma ogni elemento. La seconda legge la versione del runtime. La terza stampa undefined: in un normale script Node non c’è una pagina da manipolare.
Prova tu. Indica chi esegue JavaScript, chi mostra la pagina e chi legge un file dal disco. Risposta: il motore nel runtime, il browser e le API di Node con il sistema operativo.