back to top

Node.js: cos’è, come funziona e come si installa

Node.js (vedi sito ufficiale) è un framework, giunto alla versione versione 5.5.0 dopo un travagliato percorso di fork e ricongiungimenti del codice e del gruppo di sviluppatori, che consente di scrivere applicazioni in JavaScript lato server.

Node.js

Il codice viene eseguito tramite V8, un motore JavaScript sviluppato da Google che vanta ottime performance sia all’intero del browser, sia standalone. A partire dal 2009, anno della nascita del progetto, Node.js (o più semplicemente Node) ha conosciuto uno straordinario e sempre crescente interesse, e molte compagnie di grande prestigio lo stanno utilizzando intensivamente per diversi servizi web based.

Ma quali sono i motivi di questo successo? Node.js è una tecnologia lato server con un modello di I/O asincrono basato sugli eventi, modello particolarmente adatto ad essere programmato in JavaScript e per le applicazioni web.

La normale procedura di esecuzione di una applicazione server-side, scritta ad esempio in PHP, prevede lo scorrere di una serie di istruzioni che coinvolgono di frequente chiamate a servizi esterni come ad esempio query per un database, o l’accesso al filesystem per operazioni di lettura e scrittura. Tutti questi eventi sono bloccanti, vale a dire che l’esecuzione dello script viene fermata finché non riceve una risposta dal componente esterno a cui l’ha richiesta.

In tal modo il web server impiega la maggior parte del proprio tempo attendendo che i processi bloccati si completino, e questo porta ad una vistosa inefficienza nello sfruttamento delle risorse a disposizione.

Di seguito una semplice grafica che mostra la differenza tra una semplice applicazione PHP ed una sviluppata con Node.js:

PHP Vs. Node.js

Al contrario di quanto accade con PHP, la tecnica già ampiamente sfruttata nella programmazione JavaScript della asincronicità permette una ottimizzazione dei tempi e delle risorse molto più soddisfacente in quanto il percorso che porta al risultato non incontra blocchi e tempi morti.

Per meglio comprendere questo concetto possiamo prendere come esempio di esecuzione asincrona la funzione setTimeout di Javascript:

setTimeout(function () {
  console.log("Script terminato");
}, 3000);
console.log("In lavorazione...");

L’output in console sarà il seguente:

In lavorazione...
Script terminato

Come possiamo notare dall’output, il motore JavaScript non si è bloccato attendendo il completamento della prima routine, ma è proseguito con l’istruzione successiva. Terminata l’attesa (nei casi che ci interessano potrebbe trattarsi dell’apertura di un file o l’esecuzione di una query complessa) viene eseguita la funzione di callback.

In altre parole, il codice dice a Node.js cosa fare quando l’evento in attesa si completa, ma allo stesso tempo può far partire nuovi processi e portarli a termine senza dover aspettare la conclusione dei processi ancora incompleti.

Questa tecnica applicata al lato sever può avere quindi enormi vantaggi, ma allo stesso tempo richiede una particolare attenzione per concatenare due o più operazioni che dipendono l’una dall’altra, come ad esempio una operazione di scrittura su un file che prima deve essere creato o letto tramite il filesystem. Ritorneremo sulle tecniche più indicate per gestire questo particolare stile di programmazione in un apposito capitolo della guida.

Installare Node.js

Dopo aver illustrato, nella prcedente lezione, le caratteristiche principali di Node.js e i suoi ambiti di utilizzo, vediamo, in questa seconda lezione della nostra guida, come effettuare l’installazione del framework all’interno del nostro sistema.

Per le piattaforme Windows e OSX è possibile scaricare, a questa pagina del sito ufficiale, dei Wizard che installeranno in modo semplicissimo sia Node che npm

Possiamo verificare il buon esito dell’installazione digitando i comandi:

node --version
npm --version

i quali dovranno restituirci, in caso di successo, le versioni dei due software appena installati.

Su piattaforma Linux l’installzione può essere portata a termine compilando il sorgente, sempre disponibile dalla pagina di download, oppure, molto più semplicemente, tramite il package manager a disposizione della distribuzione su cui stiamo lavorando. In questa pagina vengono elencati i comandi per le distribuzioni principali supportate.

Anche in questo caso possiamo verificare il corretto funzionamento del framework con i comandi indicati sopra.

Altri progetti legati a Node.js

Node.js non viene utilizzato tuttavia solo per la tecnologia server-side in senso proprio: diversi software di ausilio allo sviluppatore web come Grunt, Bower e Yeoman vengono distribuiti con il package manager di Node, npm, e si appoggiano alla sua infrastruttura per rendere disponibili questi tool open source in tutte le piattaforme in cui è possibile installarlo.

Infine, il progetto NW.js combina Node con Webkit per creare applicazioni desktop per le diverse piattaforme (Mac OSX, Windows e Linux) a partire da un unico sorgente sviluppato con le tecnologie proprie del web.

Conclusioni

Nella prossima lezione della nostra guida sperimenteremo il funzionamento della sua shell (REPL) mediante alcuni esempi pratici che ne chiariranno il funzionamento.

Ritengo interessante accodare a questa lezione introduttiva questo video (in inglese) in cui il creatore di Node.js (Ryan Dahl) parla della sua creatura e delle sue ampie potenzialità.

https://www.youtube.com/watch?v=jo_B4LTHi3I
Pubblicitร 

Leggi anche...

Infinite scroll, come programmarlo su AMP e su Web con Javascript

L'infinite scroll è una tecnica di design e navigazione...

Codice Fiscale: 5 javascript per la verifica e il calcolo

Il codice fiscale รจ un identificativo tributario univoco che...

Math.ceil() – Arrotondare per eccesso con Javascript

Il metodo ceil() dell'oggetto Math di Javascript è utilizzato...

Minificare Javascript: librerie e strumenti online per comprimere il sorgente JS

La minificazione è un processo abbastanza diffuso nell'implementazione delle...

Javascript: svuotare un campo input o una textarea con un click

Quando si fornisce agli utenti un modulo per l'inserimento...

6 video player HTML5 per il tuo sito web

Con il rilascio delle specifiche definitive per HTML5 molte...
Pubblicitร