È 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
Evitare la command injection in un workflow di GitHub
Gestire condizioni complesse in JavaScript
Utilizzare ChatGPT con Azure OpenAI
Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Montare blob e file share su Azure App Service
Utilizzare l'attributo autofill del CSS
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Organizzare i moduli sfruttando CommonJS
Fare automaticamente il merge di una pull request con un workflow di GitHub
Creare un router per Single Page Application con l'evento navigate
GitHub <3 .NET