È 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
Eseguire script pre e post esecuzione di un workflow di GitHub
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Hosting di componenti WebAssembly in un'applicazione Blazor static
Gestire i dati con Azure Cosmos DB Data Explorer
Filtering sulle colonne in una QuickGrid di Blazor
Code scanning e advanced security con Azure DevOps
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Utilizzare un service principal per accedere a Azure Container Registry
Cambiare la chiave di partizionamento di Azure Cosmos DB
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente