È giunto il momento di tirare le fila su questa mini-serie che ha riguardato la creazione di moduli JavaScript: abbiamo visto come sia facile redistribuire e riorganizzare il nostro codice utilizzando poche semplici accortezze, le quali renderanno il nostro prodotto leggibile, organizzato e facilmente manutenibile.
Come anticipato nello script #369, i moduli in CommonJS sono stati il fulcro dei pacchetti Node.js. Tuttavia, questi hanno un problema: sono di natura sincroni, e sebbene per uno sviluppo backend questa sia una condizione ininfluente, per il mondo frontend è sempre consigliato utilizzare processi asincroni, che non blocchino, anche se per tempi minimi, l'interfaccia.
Gli ES Modules sono lo standard per la costruzione di moduli in JavaScript, ed essendo asincroni risolvono il problema principale della loro controparte. Sono supportati da Node 13 e, cosa molto importante, l'utilizzo di uno non preclude l'altro: possiamo utilizzare entrambe le tipologie all'interno dello stesso programma. In questo modo anche le librerie che non vengono più gestite, o quelle più complesse, la cui migrazione risulterebbe complicata, potranno comunque essere referenziate.
Oltre alla definizione, analizzata negli script delle settimane passate, e considerando che possono essere utilizzati contemporaneamente, troviamo che l'unica differenza tra i moduli CommonJS e ES Modules è nella modalità di inclusione. Mentre tutti gli ES Modules devono essere inclusi in testa al file, i moduli CommonJS possono invece essere inclusi quando se ne ha bisogno: possiamo aggiungere una referenza in cima al file o appena prima dell'utilizzo oppure includerli solo sotto una certa condizione, come mostrato in seguito.
if(doSum){ const sum = require('./module.js'); var x = sum(1); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Inizializzare i container in Azure Container Apps
Usare le collection expression per inizializzare una lista di oggetti in C#
.NET Conference Italia 2023
Load test di ASP.NET Core con k6
Usare lo spread operator con i collection initializer in C#
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Verificare la provenienza di un commit tramite le GitHub Actions
Hosting di componenti WebAssembly in un'applicazione Blazor static
Effettuare il download di un file via FTP con la libreria FluentFTP di .NET
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Sottoscrizione agli eventi sul contenitore in JavaScript
Cache policy su route groups di Minimal API in ASP.NET Core 7