Diventa Autore per CoreTech | Scopri di più





Perchè iniziare ad usare NodeJs

08/05/20 Matteo Vitale Blog

Un modello che ha facilitato ulteriormente la vita dei programmatori

di Matteo Vitale

 

NodeJs è una multipiattaforma open source costruito sul motore Javascript V8. In pratica è un framework per realizzare applicazioni web. Non è un linguaggio di programmazione ma è uno strumento che ci permette di utilizzare il linguaggio Javascript lato server.

Dalla sua nascita, intorno al 1995, Javascript era usato principalmente per modificare gli elementi html nelle pagine dei siti web così da renderle dinamiche (lato client) sfruttando l’interprete incorporato nel browser come macchina virtuale javascript.

Nel 2009 Ryan Dahl, partendo dalla macchina virtuale js del browser Chromium, ottiene l’ambiente NodeJs, che permette di usare Javascript per lo sviluppo del backend, entrando in concorrenza diretta con gli altri linguaggi storicamente dominatori dello sviluppo web server side tra cui java, python, php, ecc…

Oggi viene adoperato molto per attività con scambio diretto dei dati, come nelle applicazioni real time (chat con tanti utenti collegati contemporaneamente, giochi e creazione di software) ma anche nell’ambito della robotica e Iot (internet of things) perché riesce a gestire un enorme numero di connessioni simultanee nello stesso tempo. Questo è il valore aggiunto di NodeJs rispetto alla concorrenza. Tutto questo usando poca ram e poca Cpu.

Per fare qualche esempio di grandi aziende che si sono avvalse del supporto di Nodejs citiamo Paypal, Netflix o Linkedin che hanno sviluppato il backend con questo strumento dimezzando i tempi di costruzione.

NodeJs è un runtime costruito sul motore v8 chrome (browser per navigare).

 

Cosa vuol dire? Non spaventarti.

Il motore V8 open source è scritto in C++, consente in maniera automatica di gestire con efficacia l’utilizzo della memoria di un sistema operativo e di interagire con il filesystem e database ovvero il backend (leggere file nell’hard disk, trascrivere o modificare il codice).

Inoltre NodeJs usa un I/O event-driven non bloccante o ad eventi (per evento si intende un’azione compiuta dall’utente). Per non bloccante si intende un solo operatore che vada a gestire più richieste (input), senza sprecare troppe energie, a differenza di un sistema bloccante, che va in sospensione ad ogni richiesta, appesantendo tutto il processo in termini di percezione dell’utente.

Grazie a NodeJs con un server non eccezionale, riusciamo ad elaborare un’enorme mole di richieste, che altrimenti richiederebbero più tempo. Invii la tua richiesta (input) al sistema operativo che a sua volta chiede di ricevere una notifica (callback) poi quando è stata elaborata la richiesta dal processore viene restituito il risultato all’utente, nel frattempo però il server continua a processare altre richieste, a differenza di un sistema bloccante o sincrono che avrebbe aspettato la risposta (sleep) prima di passare ad altro. Grazie a questa sua capacità è riuscita a diffondersi rapidamente, superando i linguaggi classici di programmazione backend.

Questo metodo viene anche chiamato programmazione asincrona che “permette ad un’unità di lavoro di funzionare separatamente dal thread principale notificandogli quando avrà finito il lavoro”

Passiamo ora all’npm (node package manager) che è il più grande ecosistema di librerie open source al mondo. Potrebbe essere definito un gestore di pacchetti che una volta installato facilita la vita del programmatore. Permette non solo di utilizzare librerie già pronte, ma anche di mantenerle aggiornate man mano che sviluppi il tuo sito.

Per fare un esempio molto semplice. Supponiamo che tu voglia creare un sito e aggiungere un menù. Vai in un sistema di librerie già pronte, selezioni il pacchetto che ti interessa e lo installi all’interno del sito che vuoi creare. Come un semplice plug in esterno di Wordpress.

Il framework più usato in NodeJs è Express.js che consente di generare percorsi (URL) o utilizzare template. Genera per noi la struttura base di un progetto e aiuta nella gestione delle rotte (routing) per controllare il percorso (url) del sito in continua evoluzione. Coordinare i vari livelli per evitare le sovrapposizioni incompatibili è fondamentale nella costruzione.

Express permette di inserire le chiamate in catena che ci permetterà di abbreviare il codice. Ma consente anche di creare percorsi dinamici ossia che possono variare.

Un’ultima caratteristica unica di node.js è la possibilità di sviluppare applicazioni web “isomorfe”, in quanto basate su javascript sia lato front-end che back-end - applicazioni dette anche “full stack” javascript - con l’evidente vantaggio per il programmatore in termini di curva di apprendimento ed efficienza di utilizzo degli strumenti e delle tecniche language-dependent.

 

Aspetti negativi di NodeJs?

1) Se fai un intenso uso della Cpu

2) Se si ha intenzione di usare un database relazionale (una raccolta di elementi dati con relazioni predefinite tra di essi)

 

Un esempio rapido e facile per cominciare:

var http = require('http');

var server = http.createServer(function (req, res) {

 res.writeHead(200, {'Content-Type': 'text/plain'});

 res.end('Hello World');

})

server.listen(1337, '127.0.0.1');

Banner

console.log('Server running at http://127.0.0.1:1337/');

 

Google trends mostra come l’interesse per node.js sia in aumento, a differenza, ad esempio di php che risulta in evidente calo.


Knowledge Base su NodeJS

Introduzione a Node.js

Video Premium su NodeJS

Corsi Premium - NodeJS