Node.js è il linguaggio di programmazione che, insieme a Ruby e Python, usiamo maggiormente per sviluppare le nostre applicazioni.
Node.js è una piattaforma server side basata sul runtime Javascript di Chrome. Creato nel 2009 da Ryan Dahl per cercare di risolvere il problema della concorrenza delle piattaforme web e rendere lo sviluppo di tali sistemi più agile e flessibile: l'obiettivo era quello di creare applicazioni di rete veloci e scalabili. Successivamente, nel 2010, è stato presentato un package manager chiamato npm per permettere agli sviluppatori di gestire e scambiare librerie agevolmente, package manager che è tutt'ora in uso.
La sua uscita ha generato una grande attenzione sin dal momento del suo annuncio nel panorama dei framework di sviluppo web e ha guadagnato velocemente un livello di trazione incredibile. Questo si è tradotto nell'adozione da parte di grandi compagnie quali LinkedIn e Uber già a pochi anni dalla sua nascita e in un'esplosione di framework e librerie, basati su Javascript e interconnessi con Node. In questo modo il progetto ha continuato a guadagnare popolarità e supporto anche da aziende importanti quali IBM, Microsoft e Linux Foundation.
Node.js utilizza un modello non bloccante basato su eventi, che lo rende leggero ed efficiente, perfetto per applicazioni in tempo reale ad alta intensità di dati che si eseguono su dispositivi distribuiti.
Tra gli innumerevoli framework web che si basano su Node.js, abbiamo scelto Express.js per la sua semplicità e versatilità. Express.js nasce nel 2010, quindi è cresciuto insieme a Node. Si tratta di una libreria eccezionalmente performante e stabile divenuta nel corso degli anni sinonimo di garanzia e affidabilità. Il framework è stato mantenuto "snello" ma allo stesso tempo estendibile grazie ai numerosi plugin disponibili. Express.js, insieme a Node.js è parte integrante dello stack MEAN (MongoDB, Express.js, Angular.Js e Node.js).
A differenza di Ruby on Rails, non impone alcuna convenzione né libreria: è possibile connettersi ad un qualsiasi database usando il pacchetto che si preferisce così come è possibile implementare interfacce senza alcun vincolo sulla tecnologia.
Infine, la natura asincrona di Node.js lo fa diventare la scelta preferenziale per tutte le applicazioni che necessitano di gestire innumerevoli accessi contemporaneamente; applicazioni realtime come chat e chatbot; API per single page applications o per applicazioni mobile.