Conosciamo Node.js, vediamo insieme cos’è e come può esserti utile
Per coloro che conoscono poco l’informatica, Node è il nome di un’applicazione seguito da un’estensione, nella fattispecie “.js“, che sta per “Javascript”.
Parliamo di un “framework“, cioè una piattaforma (programma) che nasce per sviluppare dei software (altri programmi).
Degli esempi di framework: Visual Basic e i diversi CMS utili per costruire i siti internet.
Struttura del framework
Queste applicazioni sono strutturate per dare la possibilità all’utente di fruire di un ambiente di programmazione completo, dove è possibile evitare la totale scrittura riga per riga del codice di un programma, come invece era necessario in passato (si parla degli anni ’80 e ’90).
Un framework mette a disposizione interi blocchi di codice (moduli) già precompilati e consente di prepararne altri di cui disporre a proprio piacimento.
Inoltre un framework facilita ulteriormente la programmazione grazie alla presenza di utilities che sostituiscono l’inserimento di un grande numero di procedure, cioè dei blocchi di codice interni ai moduli appositamente creati per la grafica o per consentire la stampa di un documento, questo per fare un esempio; anche le procedure sono spesso precompilate, almeno in parte, costituendo quelle che in informatica sono chiamate classi.
Grazie ai framework è possibile mettere in relazione i vari moduli e strutturare un intero programma, provandolo direttamente ancora prima di eseguirne la compilazione mediante delle comode opzioni di debug, cioè dei metodi per verificare il corretto funzionamento di ogni sezione programmata.
Lo scopo di Node.js
Node.js è pertanto un framework e nasce per la gestione dei contenuti in Javascript, un linguaggio particolarmente difficile da comprendere rispetto agli altri, ma che ha una grande potenzialità, specialmente per le applicazioni web, per le quali offre la possibilità di inserire contenuti dinamici e interattivi dei quali oramai è impossibile fare a meno.
Un esempio pratico di contenuto dinamico consiste nel cursore (puntatore del mouse), quando in molti siti e social network scopre opzioni nascoste da foto e link senza che venga premuto il pulsante destro del mouse.
Node.js propone ai programmatori una novità in grado di rivoluzionare i software dal punto di vista tecnico, rendendoli più veloci, facilitando la navigazione e migliorando decisamente lo scaricamento dei dati; consente infatti di programmare in Javascript lato server, e non solo lato client come era possibile fino ad ora. Vediamo i vantaggi di questa nuova soluzione.
Perchè programmare lato server
Premettiamo che il server e il client identificano due terminali posti alle estremità di un filo. Il client è il computer che tutti abbiamo in casa, mentre il server è il World Wide Web, cioè la rete internet.
L’interattività dei siti consentita dall’uso di Javascript rende ogni visitatore in grado di inviare dati complessi al server, che ovviamente deve dare una pronta risposta per ogni domanda.
Succede che il flusso dei dati è diventato con il passare degli anni sempre più pesante e strutturato e il server impiega molto più tempo nella loro elaborazione; da qui la necessità di connessioni sempre più rapide.
L’effetto indesiderato a svantaggio di ogni utente è la comparsa della solita icona dinamica, tipica delle riproduzioni video, che il più delle volte fa arrabbiare parecchio e che indica l’attesa di una risposta del server.
Node.js permette di programmare blocchi di codice Javascript direttamente sul server, velocizzando la comunicazione fra i due terminali, riducendo i tempi di attesa e consentendo agli utenti una navigazione più fluida.
Inoltre Node.js lavora con un modello chiamato event-driven, un sistema simile al funzionamento multitasking di ogni computer e che evidenzia un comportamento asincrono; significa che ogni volta che si fa una domanda al server, parte immediatamente la procedura di risposta, senza che sia necessario attendere l’esito di un’azione precedente.
Un altro vantaggio che deriva dalla programmazione lato server, consiste nell’opportunità di uniformare i blocchi di codice, che diventano così utilizzabili dalla maggior parte dei programmatori, senza che ogni sito abbia i suoi per forza di cose.
Questo aspetto, in aggiunta al fatto che Node.js è un’applicazione Open Source, cioè un software integrabile e modificabile in ogni momento da qualunque programmatore, permette agli utenti di essere in possesso di un mezzo potente e versatile per la gestione di un sito internet.
I moduli di Node.js
Si può affermare che Node.js sia un framework open-source modulare; in sintesi un software utile alla programmazione composto da più moduli, modificabili liberamente da tutti direttamente sul server.
L’idea è pertanto quella di rendere il rapporto internauta-rete internet sempre più interattivo, un metodo che aiuta a crescere ogni sito e la stessa rete in modo praticamente autonomo grazie all’aiuto di tutti.
Una volta installato il programma, operazione fattibile attraverso il sito ufficiale mediante la consueta procedura guidata, saranno disponibili tre applicazioni:
– node: consente di lanciare applicazioni attraverso un file;
– node-waf: è utile per costruire nuovi moduli;
– npm: è utile per l’installazione di applicazioni.
Utilizzando node sono disponibili i seguenti moduli:
– globals: raggruppa una serie di procedure utilizzabili direttamente mediante un comando. Questo modulo contiene anche la funzione require che permette di aggiungere nuovi moduli;
– http: contiene utilities per avviare il server web;
– url: permette la creazione di indirizzi e di trasformarli in classi mediante il comando “parse”;
– path: permette di individuare i percorsi della macchina e di organizzarli;
– file-system: consente di elaborare a piacimento i filesystem della macchina;
– util: offre la possibilità di definire le variabili, fondamentali in informatica ai fini del calcolo e dell’associazione di stringhe di caratteri alfanumerici;
– net: permette di agire sulle connessioni.
Node.js mette a disposizione la funzione “require”, con la quale è possibile richiamare i moduli con relative funzionalità.
La funzione require permette anche la creazione di moduli nuovi e può contare in un “dispatcher”; si tratta di un componente la cui utilità è individuare la porta e il protocollo da cui arriva la domanda di un utente, in modo da poter dare una risposta adeguata all’effettiva richiesta.
Questa necessità è dovuta alla complessità che caratterizza la rete internet dal punto di vista delle connessioni, ovviamente tutte differenti una dall’altra.
I metodi Get e Post
Queste due ulteriori funzionalità aggiungono all’interazione con gli utenti la possibilità del riciproco scambio di dati; il metodo Get consente di memorizzare e rielaborare i dati in ingresso, viceversa il metodo Post permette di inviare dati ad altri utenti.
Questa sistema fa parte di ciò che meglio caratterizza Node.js, cioè la possibilità di interagire in modo reciproco sulle applicazioni, nell’ottica di ogni applicazione Open Source.
Gestione totale dell’interazione client/server
Node.js nasce per facilitare la navigazione e lo scambio di dati. I programmi più in uso che caratterizzano per esempio il funzionamento dei social network, necessitano di connessioni veloci e scambi d’informazioni istantanei, nell’ottica di quanto detto fino a ora.
Per fare questo Node.js si basa sulla collaudata architettura Comet, la quale mette a disposizione un polling efficace sotto tutti i punti di vista.
Significa che grazie alla programmazione server-side, il server stesso riesce a sentire la presenza e l’eventuale interazione di ogni terminale connesso a un software.
Tutto ciò è alla base del funzionamento di ogni social network e qualsiasi tipo di piattaforma di giochi online, dal poker agli scacchi; gli utenti connessi beneficiano di risposte molto più rapide bypassando quelli che possono essere i problemi di connessione dovuti a malfunzionamenti di linea.
In questo modo si può disporre di applicazioni real-time, cioè programmi mediante i quali la comunicazione avviene in tempo reale e simula la realtà quotidiana nei rapporti interpersonali.
Node.js permette l’uso di Websocket, una parte di html5 il cui scopo è costruire le applicazioni real-time approfittando di blocchi di codice già precompilati, facilitando il lavoro degli sviluppatori.
Hosting per Node.js
Per utilizzate Node.js è opportuno affidarsi a hosting adeguati, che permettano un’adeguato sviluppo di questo tipo di tecnologia.
Esistono soluzioni gratuite e a pagamento, delle quali quest’ultime sono indicate per coloro che conoscono già il tornaconto che potrebbe derivare dal loro lavoro. I portali gratuiti sono comunque validi, specie per i neofiti e per chi usa Node.js a scopo didattico.
Le soluzioni gratuite sono:
– Nodester: propone domini di terzo livello e non dispone di database;
– Cloudno.de: permette l’uso di domini personalizzati e offre un database “NoSQL”;
– Nodesocket: propone le condizioni di base, esattamente come Nodester.
Pagando un canone mensile è invece possibile scegliere fra i seguenti portali:
– Heroku: un cliente di lusso di Heroku è proprio Facebook, un biglietto da visita già molto eloquente: è prevista anche l’assistenza remota;
– Nodejitsu: ha lo svantaggio di essere un portale che non offre assolutamente la professionalità di Heroku; i prezzi sono però decisamente più bassi e l’offerta comprende un pacchetto tutto sommato valido. Nodejitsu ha un punto di forza tutto suo: è stato praticamente creato unicamente per lavorare con applicazioni Node.js.
Grazie alla Development Sandbox si dispone di uno strumento molto valido a i fini dello sviluppo di ogni applicazione, anche per testarla in ogni momento.
Il virtuale è sempre più reale
Un framework di questo tipo è la chiara intenzione di mettere sullo stesso piano le relazioni faccia a faccia con quelle informatiche.
Indubbiamente chi vuole affrontare un discorso può sempre prediligere ai social una videochiamata, ma Node.js permette molto di più, cioè lo sviluppo in tempo reale di un ambiente di lavoro o di gioco, in un ambito dove lo scambio di informazioni ha sempre meno pause; anzi, probabilmente vi sono più pause nel mondo reale.