Ogni buon web developer che si rispetti deve avere nel proprio bagaglio di conoscenze Node.js. Di questi tempi, infatti, è molto frequente trovarlo tra le competenze richieste all’interno delle offerte di lavoro, all’interno dei pre-requisiti che una figura professionale deve avere.
Ma Node js cos’è?
Definito da Wikipedia come “una compilazione del motore JavaScript di Google”, si tratta di un ambiente runtime single-thread, open-source per la creazione di applicazioni lato server e di networking veloci e scalabili. Gira sul motore, appunto, del linguaggio JavaScript V8 e usa un’architettura I/O basata sugli eventi. Può essere impiegata per elaborare chat in tempo reale, API REST , applicazioni IoT.
Linguaggio JavaScript e Node.js
Come accennato Node gira sul motore del linguaggio Javascript: ovviamente, dunque, per sapere cos è Node js, bisogna avere una buona conoscenza della programmazione JavaScript. Saper programmare in JavaScript è, anch’esso, uno dei requisiti maggiormente richiesti dalle aziende di sviluppo web, quindi perché non prendere due piccioni con una fava, approfondendo la conoscenza di entrambi? Un buon modo per iniziare a fare conoscenza col linguaggio Javascript è senza dubbio quello di leggere la nostra guida Javascript in italiano: corri a dare un’occhiata!
5 utilissime librerie Node.js
Ma veniamo al punto! In questo articolo, come il titolo promette, ci focalizzeremo sulle 5 librerie più utilizzate all’interno dell’ambiente single-thread più famoso al mondo. Cominciamo!
- Nodemailer: l’invio di e-mail è reso possibile in maniera automatizzata dal modulo Nodemailer per le app Node.js. Offre un’API intuitiva per l’invio di e-mail utilizzando diversi protocolli di trasporto, come SMTP, sendmail o Amazon SES.
- Fastify: Un framework web apprezzato ed efficace per Node.js, Fastify fornisce un approccio rapido e flessibile per creare applicazioni web. Gode di una buona portabilità e può essere utilizzato per creare una varietà di app, tra cui app Web, API RESTful e programmi in tempo reale basati su WebSocket.
- Passport.js: Un middleware di autenticazione molto apprezzato ed ormai diffuso per Node.js. Si chiama Passport.js ed offre un’API semplice e adattabile per l’autenticazione degli utenti nelle tue app online. Supporta diversi tipi di autenticazione, inclusa l’autenticazione locale, OAuth, OpenID e altri. Vediamo un breve script per autenticare un utente con questa libreria.
const passport = require('passport'); 2. const LocalStrategy = require('passport-local').Strategy; 3. 4. passport.use(new LocalStrategy( 5. function(username, password, done) { 6. User.findOne({ username: username }, function(err, user) { 7. if (err) { return done(err); } 8. if (!user) { return done(null, false); } 9. if (!user.validPassword(password)) { return done(null, false); } 10. return done(null, user); 11. }); 12. } 13. ));
- Moongoose: Uno strumento di modellazione di oggetti MongoDB creato per ambienti asincroni che si chiama Mongoose. Per modellare i dati per un’applicazione, offre una semplice soluzione basata su schemi e include cast di tipi, convalida, costruzione di query e hook di logica aziendale integrati. Ecco un’illustrazione di come utilizzare Mongoose per definire uno schema e costruire un modello, il quale ricorda molto le classi in Java o in generale nei linguaggi ad oggetti.
const mongoose = require(‘mongoose’);1. const userSchema = new mongoose.Schema({ 2. name: String, 3. age: Number, 4. email: String 5. }); 6. 7. const User = mongoose.model('User', userSchema);
- Pino: questa libreria dal simpatico nome, risulta essere il compagno perfetto per i debug in Node.js. Si tratta di una package piccolo e velocissimo per Node.js che mette a disposizione numerose funzionalità, come livelli di log e serializzatori. La registrazione ad alte prestazioni è resa possibile tramite l’interfaccia di streaming di Pino. Potete registrare più messaggi di log a runtime per verificare il flusso del programma.
const passport = require('passport'); 2. const LocalStrategy = require('passport-local').Strategy; 3. 4. passport.use(new LocalStrategy( 5. function(username, password, done) { 6. User.findOne({ username: username }, function(err, user) { 7. if (err) { return done(err); } 8. if (!user) { return done(null, false); } 9. if (!user.validPassword(password)) { return done(null, false); } 10. return done(null, user); 11. }); 12. } 13. ));
1. const userSchema = new mongoose.Schema({ 2. name: String, 3. age: Number, 4. email: String 5. }); 6. 7. const User = mongoose.model('User', userSchema);
Queste sono solo 5 delle centinaia di migliaia di libreria che Node.js ha a disposizione. Essendo molto conosciuto ed utilizzato, nonché open source, gode di un supporto da parte degli sviluppatori molto forte e costante. Questo lo rende versatile e scalabile nel tempo. Ecco il motivo per cui ad oggi, ogni web developer dovrebbe interfacciarsi con Node.js.