Cos’è Node.js? Come eseguire JavaScript sul server
Scopri cos’è Node.js", un ambiente di runtime basato su JavaScript che ti permette di eseguire il codice JavaScript sul server, portando la potenza di questo linguaggio anche lato backend
PROGRAMMAZIONE BACK-END
1/2/20254 min read


Introduzione a Node.js
Node.js rappresenta un ambiente di runtime JavaScript costruito sulla base del motore V8 di Google, che consente l'esecuzione di codice JavaScript al di fuori del browser. Questa innovativa tecnologia è stata concepita per affrontare le crescenti necessità di applicazioni web moderne, dove la reattività e le prestazioni sono cruciali. A differenza dei tradizionali linguaggi di backend, Node.js si distingue per la sua architettura basata su eventi, che favorisce la gestione di molteplici richieste contemporaneamente senza bloccare il flusso del programma.
La caratteristica principale di Node.js è l'approccio asincrono nella gestione delle operazioni di I/O, consentendo di elaborare più richieste senza dover attendere il completamento di un'operazione prima di iniziarne un'altra. Ciò si traduce in un incremento significativo delle prestazioni per le applicazioni, rendendole altamente reattive. Questa architettura è particolarmente vantaggiosa per la creazione di applicazioni in tempo reale, come le piattaforme di chat e i giochi online, dove la velocità di risposta è essenziale.
Inoltre, Node.js supporta l'utilizzo di pacchetti e librerie tramite il gestore di pacchetti npm, il che permette agli sviluppatori di accedere a una vasta gamma di strumenti per estendere le funzionalità delle proprie applicazioni senza dover scrivere ogni singola parte del codice da zero. Questo non solo accelera il processo di sviluppo, ma promuove anche la comunità collaborativa, poiché gli sviluppatori possono contribuire e condividere soluzioni.
I vantaggi di Node.js si estendono anche alla scalabilità: consente di costruire applicazioni che possono crescere orizzontalmente, ma anche verticalmente, adattandosi alle richieste aumentate senza compromettere la stabilità. Queste caratteristiche lo rendono una scelta privilegiata per le aziende che cercano di sviluppare soluzioni di backend rapide, scalabili e facilmente manutenibili.
Come funziona Node.js come ambiente di runtime
Node.js si distingue come un ambiente di runtime per JavaScript, abilitando gli sviluppatori a eseguire codice JavaScript sul server piuttosto che nel browser. La sua architettura si basa su un modello di programmazione asincrono, che consente di gestire le operazioni senza bloccare l'esecuzione del codice. Questo approccio è particolarmente utile per applicazioni che richiedono la gestione di molteplici richieste simultanee, come server web e API.
Una delle caratteristiche fondamentali di Node.js è l’event loop, un ciclo che permette al runtime di eseguire codice, raccogliere e gestire eventi e coordinare le operazioni I/O. Quando un’applicazione riceve una richiesta, il codice di gestione viene assegnato al loop degli eventi, il quale continua a eseguire altre operazioni senza attendere la conclusione della richiesta attuale. Ciò significa che Node.js può trattare altre richieste o processi anche quando un’operazione I/O, come la lettura di un file o una richiesta di rete, è in corso.
Le operazioni I/O in Node.js utilizzano un modello non bloccante, che accetta una callback per gestire il completamento dell'operazione. Quando l'operazione viene completata, la callback viene inserita nel ciclo degli eventi per essere eseguita successivamente. Questo sistema permette una grande efficienza e scalabilità, consentendo a Node.js di supportare migliaia di connessioni simultanee senza l'aumento proporzionale delle risorse. Il ciclo di vita delle richieste in Node.js, quindi, è caratterizzato da una gestione fluida ed efficace delle operazioni, ottimizzando il flusso di lavoro e le performance complessive dell’applicazione.
Creare un semplice server con Node.js
Node.js è una piattaforma open-source popolare per eseguire JavaScript sul server, ed è particolarmente adatta per la creazione di applicazioni web scalabili e performanti. Per iniziare, è possibile configurare un semplice server web utilizzando moduli incorporati. Di seguito è riportato un esempio di codice che illustra come impostare un server di base e gestire le richieste HTTP.
Cominciamo creando un file chiamato server.js
e inserendo il seguente codice:
const http = require('http');const hostname = '127.0.0.1';const port = 3000;const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n');});server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`);});
In questo esempio, importiamo il modulo http
di Node.js, che fornisce utilità per la creazione di un server. Abbiamo poi specificato l'indirizzo del server e la porta su cui ascolterà le richieste. L’oggetto server
è creato utilizzando http.createServer()
, che accetta una funzione callback. Questa funzione è chiamata ogni volta che il server riceve una richiesta. All'interno di essa, impostiamo il codice di stato della risposta a 200 (che indica che la richiesta è stata elaborata con successo) e definiamo il tipo di contenuto come 'testo semplice'. Infine, inviamo una risposta 'Hello, World!'
Per avviare il server, si utilizza il metodo listen
, che rende il server pronto per ricevere richieste. Aprendo il browser all'indirizzo http://127.0.0.1:3000/
, si potrà visualizzare il messaggio "Hello, World!". In questo modo, si ottiene una comprensione di base della creazione di un server con Node.js e delle sue funzioni fondamentali. Sperimentare con le risposte e le varie parti del codice può aiutare ad adattare il server alle diverse esigenze applicative.
Utilizzare Node.js con altri framework come Express.js
Node.js è un ambiente runtime potente che consente di eseguire JavaScript sul server, e quando combinato con framework come Express.js, offre un modo efficiente per semplificare lo sviluppo di applicazioni web e API. Express.js è un framework web minimalista e flessibile per Node.js, progettato per costruire applicazioni web e servizi RESTful. La sua architettura modulare consente agli sviluppatori di configurare le strutture applicative con facilità.
Uno dei principali vantaggi di utilizzare Express insieme a Node.js è la gestione semplificata delle richieste HTTP. Express fornisce una serie di metodi per impostare le route e gestire le risposte. La sua sintassi chiara e concisa facilita l'organizzazione del codice e consente ai programmatori di concentrarsi sulle funzionalità senza doversi preoccupare della complessità sottostante. Inoltre, anche il middleware è una caratteristica fondamentale di Express che consente di trattare le richieste in modo modulare, permettendo agli sviluppatori di implementare facilmente funzionalità aggiuntive come l'autenticazione, il logging o la gestione degli errori.
Iniziare a costruire applicazioni web con Node.js ed Express è relativamente semplice. Per cominciare, è necessario installare il framework tramite npm, il gestore pacchetti di Node.js, e poi iniziare a definire le route utilizzando i metodi forniti da Express. Una volta configurato, gli sviluppatori possono creare API RESTful efficienti, manipolare i dati e interagire con database. Grazie alla comunità attiva e alla ricca documentazione di Express.js, è possibile reperire facilmente risorse che facilitano l'apprendimento e l'implementazione di nuove funzionalità.
Questo connubio tra Node.js e Express.js rappresenta una soluzione efficace per lo sviluppo di applicazioni web moderne, dove prestazioni elevate e scalabilità sono spesso requisiti fondamentali.