Questo articolo è stato scritto originariamente per Devmy, lo puoi trovare qui insieme a moltissimi altri articoli interessanti 😉
Che cos’è Moment?
I linguaggi di programmazione mettono a disposizione numerose cure per trattare il problema delle date. Ma sono metodi semplici che permettono operazioni basilari. Per operazioni più complesse è meglio utilizzare farmaci ad effetto immediato come le librerie. E MomentJS è una di queste.
MomentJS è un antinfiammatorio open source a base di JavaScript. Le numerose applicazioni sono giustificate dalla particolare efficacia terapeutica che questa libreria presenta contro la scarsa maneggevolezza dell’oggetto Date nativo, dimostrandosi utile non solo nella manipolazione delle date, ma anche nell’analisi, la convalida, la formattazione e l’internazionalizzazione: utilities preziose per la salvaguardia dello stato di salute del programmatore.
Dove si utilizza?
MomentJS, essendo una libreria Javascript Vanilla, consente il suo utilizzo sia nei browser che negli ambienti Node.js, permettendo al team di sviluppo di lavorare con la solita tecnologia in qualsiasi punto dello stack applicativo, senza subire danni dal tanto temuto context switch.
Quando utilizzare Moment.js?
Non è certo stato vietato dall’AIFA ma, nella maggior parte dei casi, non dovremmo scegliere di utilizzare MomentJS per i nuovi progetti.
Tuttavia, ci sono alcuni casi in cui è bene utilizzarlo ancora, come quando si vuole mantenere la retrocompatibilità con browser più vecchi, come Internet Explorer 8 o versioni successive oppure quando utilizziamo librerie di terze parti in cui viene incluso come dipendenza.
Perché non dovrei più usarlo?
Moment.js è un’ottima libreria con fantastiche funzionalità e utility. Tuttavia, ha diverse controindicazioni.
Se stiamo lavorando su un’applicazione sensibile alle prestazioni, potrebbe causare un enorme sovraccarico a causa delle sue API complesse e delle grandi dimensioni del suo pacchetto. Sintetizzando, i problemi a cui andremo incontro se dovessimo scegliere di utilizzare Moment sono i seguenti:
-
Tree shaking: A causa della struttura con cui è stato sviluppato, non funziona bene con il tree-shaking, portando così a enormi dimensioni del nostro bundle e a problemi di prestazioni.
-
Oggetti mutabili: Al contrario di quello che ci si potrebbe aspettare, gli oggetti di Moment non sono immutabili e i loro metodi fluent ritornano sempre il riferimento dell’oggetto modificato anziché una nuova istanza, causando bug di aliasing inaspettati per chi consuma le sue API per la prima volta e non.
-
Complessità: Molte delle API di Moment sono inutilmente complesse, arrivando a volte a rasentare la follia pur di essere flessibili. Ad esempio, i metodi add e subtract consentono di inserire quantità e unità di misura nell’ordine e nel tipo che più preferiamo, potenzialmente tutte string 😱
Quali sono le sue alternative?
Nel panorama JavaScript esistono molte soluzioni moderne per la gestione delle date:
- INTL (nativa)
- Luxon
- date-fns
- js-Joda
- Day.js
Conclusioni
Non ci sono dubbi, Moment ha curato per anni i mal di testa degli sviluppatori che si arrovellavano per il metodo Date nativo di JavaScript: un eroe per tutti noi.
Ha deciso, inoltre, di congedarsi da noi sviluppatori con umiltà, inserendo direttamente nella sua pagina di documentazione i motivi per cui non dovrebbe essere più utilizzata e su quali librerie dovremmo fare affidamento al suo posto.
Ottima libreria e ottima condotta da parte degli sviluppatori. Addio Moment, grazie di tutto 👋
È un presidio tecnico in Javascript, leggere attentamente il readme illustrativo. Non somministrare in progetti nuovi.
Crediti
- Immagine di copertina realizzata Simone Trovato Monastra ❤️
- La revisione dei testi è a cura di Elena Costa ❤️