Node.js è diventato l’ambiente di runtime preferito da molti sviluppatori che lavorano su applicazioni web. Costruito per eseguire codice scritto in JavaScript, uno dei linguaggi di programmazione più diffusi al mondo, Node.js rende accessibile la creazione di applicazioni lato server a una vasta comunità di sviluppatori.

Node.js supporta la riutilizzabilità del codice attraverso le librerie JavaScript, ma scegliere le librerie migliori può rivelarsi un compito scoraggiante. Le librerie utili possono accelerare i tempi di sviluppo e offrire una vasta gamma di vantaggi per la vostra applicazione web, tra cui tempi di caricamento più rapidi e dimensioni ridotte del bundle dell’applicazione.

Per scegliere una libreria, è necessario considerare la complessità dell’applicazione, la community che sta dietro alla libreria, la frequenza degli aggiornamenti e la qualità della documentazione.

Le librerie in Node.js sono gestite dal gestore di pacchetti Node.js, npm, che può aiutarvi a installare molte librerie open-source. Abbiamo identificato 13 librerie essenziali per Node.js che rendono più facile la vita di uno sviluppatore web.

Cos’è Node.js?

Node.js è un ambiente runtime open-source, lato server, per il codice JavaScript. Ha un’architettura asincrona e una compatibilità multipiattaforma che lo rendono una base popolare per lo sviluppo web.

Node.js utilizza un I/O non bloccante e guidato dagli eventi, il che lo rende molto efficiente nelle applicazioni distribuite in tempo reale che gestiscono molti dati.

Cos’è una libreria Node.js?

Una libreria, o modulo, è un codice pre-scritto che astrae le attività comunemente richieste. È possibile usare le librerie per accelerare il processo di codifica e promuovere la riusabilità del codice, aiutandovi a mantenere il vostro lavoro “DRY” (Don’t Repeat Yourself), ovvero privo di ripetizioni.

A differenza dei framework, le librerie contengono funzioni complete che si possono incorporare in un progetto in qualsiasi fase di sviluppo. Un framework, invece, fornisce in genere uno scheletro per un’intera applicazione e spesso ha un impatto significativo sul modo in cui viene costruita.

Librerie Node.js che lavorano per voi

Vediamo 13 di queste librerie Node.js e scopriamo i loro vantaggi.

1. Sequelize

Sequelize è uno strumento Node.js mappatore oggetto-relazionale (ORM) basato su promises che aiuta gli sviluppatori a lavorare più facilmente con i database relazionali. Supporta database come PostgreSQL, MySQL, MariaDB, SQLite e altri ancora.

Utilizzando oggetti JavaScript, Sequelize modella la struttura delle tabelle del database e si connette al database relazionale desiderato per interrogare e trasformare i dati. Quindi analizza e restituisce i dati recuperati come oggetto JavaScript.

Il logo della libreria Node.js Sequelize.
Il logo di Sequelize.

Caratteristiche e vantaggi della libreria Sequelize

  • Si collega ai database ed esegue operazioni senza scrivere query SQL grezze
  • Riduce le vulnerabilità a SQL injection e gli attacchi di SQL injection
  • Compatibile con GraphQL

2. CORS

CORS è un pacchetto di Node.js che fornisce la condivisione di risorse di origine incrociata (CORS) come middleware che si basa su Connect/Express.

Il pacchetto CORS forma un involucro attorno al middleware di route di Node.js, consentendo all’applicazione di accedere a risorse provenienti da domini diversi dal proprio. Accoglie diversi parametri per configurare le opzioni di cross-origin, tra cui origine, intestazioni e altro.

Schermata del codice della libreria CORS in un editor di testo.
Un esempio di codice CORS (configurazione).

Caratteristiche e vantaggi della libreria CORS

  • Riduce la quantità di codice necessaria per abilitare il CORS in un’applicazione web
  • Consente di configurare i domini in elenco e permette all’utente di abilitare il CORS per alcune origini selezionate e di bloccarne altre
  • Fornisce una gestione degli errori senza soluzione di continuità e aiuta gli sviluppatori ad analizzare le minacce alla sicurezza provenienti da origini sospette

3. Nodemailer

Nodemailer semplifica l’invio di e-mail dal server Node.js. Utilizza un oggetto di trasporto che si basa sul Simple Mail Transfer Protocol (SMTP), tra gli altri trasporti supportati. Questo oggetto di trasporto prende in input from, to, subject, body e altri parametri per costruire un messaggio.

Il logo della libreria Node.js Nodemailer.
Il logo di Nodemailer.

Caratteristiche e vantaggi della libreria Nodemailer

  • Un unico modulo che supporta diversi protocolli e soluzioni, tra cui SMTP, Amazon Simple Email Service (SES), Sendmail e Stream
  • Supporta contenuti testuali e HTML come corpo dell’email
  • Configura notifiche sullo stato di consegna e supporto delle consegne di email in blocco

4. Passport

Passport è un middleware di autenticazione modulare per Node.js. Passport offre oltre 500 strategie di autenticazione, tra cui Google, Facebook, Twitter e altri provider personalizzati e single sign-on (SSO). Le strategie includono la normale autenticazione con nome utente e password, l’autenticazione delegata tramite OAuth per i siti di social media e OpenID per l’autenticazione federata.

Il logo della libreria Node.js Passport.
Il logo di Passport.

Caratteristiche e vantaggi della libreria Passport

  • Autenticazione SSO integrata per i siti di social media con un codice minimo
  • Configurazione di informazioni di login persistenti per più sessioni
  • Possibilità di evitare di montare nuovi percorsi nell’applicazione utilizzando una configurazione senza ostacoli con i middleware Express e Connect

5. Async

Async è un potente modulo di utility di Node.js che aiuta gli sviluppatori a lavorare con JavaScript asincrono lavorando con funzioni JavaScript “async” o che accettano callback. Se si passa un array di callback al modulo Async, questo li esegue e li avvolge per restituire una promise.

Il logo della libreria Node.js Async.
Il logo Async.

Caratteristiche e vantaggi della libreria Async

  • Fornisce circa 70 funzioni di utility per sviluppare facilmente un flusso di controllo asincrono
  • Offre una funzione “parallela” per affrontare richieste multiple a un host (che altrimenti richiederebbero molto codice per essere implementate)
  • Aiuta a eliminare le “callback Hell” annidate in JavaScript

6. Winston

Winston è una libreria per il logging di Node.js che supporta il logging universale con più trasporti. Questi trasporti memorizzano e configurano i log in base alle esigenze dell’applicazione.

Oltre a quelli predefiniti, la funzione createLogger aiuta a creare logger personalizzati che utilizzano le opzioni di trasporto disponibili, come console, file e database. I logger personalizzati possono essere utilizzati anche con trasporti personalizzati.

Schermata del codice Winston in un editor di testo.
Un esempio di codice Winston.

Caratteristiche e vantaggi della libreria Winston

  • Centralizza il controllo dei log attraverso un unico file di configurazione
  • Permette di personalizzare i formati dei log, ad esempio memorizzando i log in formato JSON o come testo
  • Fornisce livelli di log personalizzabili che si possono configurare in base alle esigenze dell’applicazione

7. Mongoose

Mongoose è uno strumento di modellazione di oggetti per MongoDB basato su Node.js, noto anche come libreria ODM (Object Data Modeling), che offre una serie di funzioni come hook, validazione dei modelli, connessione e interrogazione.

Mongoose offre una soluzione basata su schemi per i dati delle applicazioni, imponendo un unico schema a livello di applicazione che costituisce una raccolta in MongoDB. Ogni schema è associato a un modello Mongoose, che permette di eseguire query su una raccolta MongoDB, come il recupero, l’aggiornamento e la cancellazione dei dati.

Il logo della libreria Node.js Mongoose.
Il logo Mongoose.

Caratteristiche e vantaggi della libreria Mongoose

  • Facile astrazione delle query, consentendo agli sviluppatori di scrivere meno codice per le transazioni MongoDB
  • Convalida dei dati incorporata per definire regole sul tipo di dati che possono essere aggiunti o aggiornati nel database
  • Struttura predefinita per la raccolta MongoDB, che fornisce agli sviluppatori un’istanza MongoDB di tipo boiler-plate
  • Concatenamento delle query per lavorare con query multiple

8. Socket.IO

Socket.IO è una libreria di comunicazione Node.js che stabilisce una comunicazione in tempo reale, bidirezionale e basata su eventi tra un browser client e il server.

Utilizza Engine.IO per stabilire una connessione di basso livello tra il server e il client, utilizzando un handshake digitale attraverso il long-polling HTTP. Una volta stabilita la connessione, la comunicazione tra client e server avviene in tempo reale su TCP.

Il logo della libreria Node.js Sockets.IO.
Il logo Sockets.IO.

Caratteristiche e vantaggi della libreria Sockets.IO

  • Fornisce un canale di comunicazione a basso costo utilizzando WebSocket e consente il long-polling HTTP come opzione di ripiego
  • È scalabile e consente ai server di trasmettere eventi a più client in modo semplice
  • Supporta il multiplexing attraverso i namespace, che riduce al minimo il numero di connessioni TCP utilizzate e riduce le porte socket sul server

9. Lodash

Lodash è una libreria di utility che aiuta gli sviluppatori a scrivere codice JavaScript conciso e manutenibile. Dispone di oltre 200 funzioni di utility per semplificare le attività di programmazione quotidiane, tra cui il controllo dei tipi, semplici operazioni matematiche e altro ancora.

Il logo della libreria Node.js Lodash.
Il logo di Lodash.

Caratteristiche e vantaggi della libreria Lodash

  • Mantiene la compatibilità tra i vari browser grazie all’aiuto di polyfill
  • Fornisce soluzioni integrate quando si lavora con un array di oggetti, consentendo operazioni come filter, find, e flatMap
  • Aiuta gli sviluppatori a evitare le ripetizioni e a mantenere il codice pulito

10. Axios

Axios è un client HTTP basato su promises per browser e Node.js. Gestisce anche la trasformazione dei dati delle richieste e delle risposte dal browser o da Node.js, se necessario.

Axios è isomorfo, cioè può essere eseguito sul server e sul client con la stessa base di codice. Per la comunicazione HTTP, Axios utilizza un modulo HTTP nativo sul lato server e XMLHttpRequest sul lato client.

Il logo della libreria Node.js Axios.
Il logo di Axios.

Caratteristiche e vantaggi della libreria Axios

  • Offre funzioni API integrate per i tipi di dati HTTP più comuni, come GET, PUT, POST, e DELETE
  • Garantisce una maggiore sicurezza grazie alla protezione CSRF (Cross Site Request Forgery) durante le richieste HTTP su Internet
  • Trasforma facilmente i dati di risposta in JSON grazie alla trasformazione automatica dei dati JSON

11. Puppeteer

Puppeteer è una libreria Node.js che automatizza Chrome fornendo un’API di alto livello per controllare Chrome/Chromium attraverso il protocollo DevTools. Automatizza i test del frontend, compresi i test di gestione delle richieste, l’individuazione e il confronto degli elementi dell’interfaccia utente, i test delle prestazioni e altro ancora.

Gli sviluppatori possono importare il pacchetto Puppeteer nel loro codice per creare un’istanza di Chromium. L’istanza può quindi automatizzare i test comunicando con il motore del browser.

Il logo della libreria Node.js Puppeteer.
Il logo di Puppeteer.

Caratteristiche e vantaggi della libreria Puppeteer

  • Zero setup, facile da configurare e non richiede driver aggiuntivi
  • Esamina i siti web per generare contenuti prerenderizzati
  • Compatibile con i più diffusi framework di testing come Jest e Mocha

12. Multer

Multer è una libreria middleware per Node.js. È scritta sopra il parser busboy dei moduli HTML e gestisce dati multipart e multiform.

Dopo aver inizializzato l’istanza di Multer, riceve un oggetto dest come una delle sue opzioni per specificare dove il file caricato verrà memorizzato sul server. Multer invia un oggetto file insieme alla richiesta di caricamento, che viene analizzato e inviato alla posizione di destinazione dall’API di Multer.

Schermata del codice Multer in un editor di testo.
Un esempio di codice Multer con il markup di un modulo HTML.

Caratteristiche e vantaggi della libreria Multer

  • Rende i dati grezzi delle richieste HTTP più accessibili per l’archiviazione grazie al parsing integrato
  • Permette di specificare il tipo di codifica del file, aggiungendo un ulteriore livello di sicurezza al file caricato
  • Filtra e può limitare le opzioni di caricamento per tipo e dimensione del file

13. Dotenv

Dotenv è una libreria di utility Node.js che gestisce le variabili d’ambiente nell’applicazione e protegge le variabili di configurazione sensibili. Dotenv aiuta inoltre l’applicazione a seguire la metodologia delle app a dodici fattori per la memorizzazione delle variabili d’ambiente. Configurando la libreria Dotenv fin dall’inizio, le variabili d’ambiente verranno iniettate automaticamente da .env a provess.env.

Il logo della libreria Node.js Dotenv.
Il logo Dotenv.

Caratteristiche e vantaggi della libreria Dotenv

  • Aiuta a separare i segreti, come le chiavi API e le credenziali di accesso, dal codice sorgente e consente a ogni sviluppatore di creare un file .env per il proprio uso
  • Non contribuisce alla dimensione dell’applicazione grazie al suo modulo a dipendenza zero

Riepilogo

Node.js ha una pletora di librerie utili, ma scegliere la migliore per il proprio progetto può essere difficile. Alcune delle librerie Node.js che abbiamo trattato qui potrebbero essere dei “must-have” per la vostra prossima applicazione.

Ad esempio, se lavorate prevalentemente con MongoDB, l’uso di Mongoose può essere una salvezza. CORS può aiutarvi a distribuire contenuti da più domini e Dotenv può essere estremamente utile se avete bisogno di condividere codice – ma non segreti – all’interno di un team.

Ora che avete dato un’occhiata ad alcuni dei pacchetti più essenziali di Node.js, è il momento di creare la vostra applicazione Node.js. Le piattaforme di Hosting di Applicazioni e di Hosting di Database di Kinsta possono accelerare il vostro processo di sviluppo. Inoltre, potete iniziare gratuitamente con il Piano Hobby di Kinsta e scalare quando la vostra applicazione diventerà famosa.

Steve Bonisteel Kinsta

Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.