Addio Moment, ma solo se non hai mal di testa!

MomentJS è il presidio medico contro il mal di testa preferito da milioni di sviluppatori dal 2011. Non ha vincoli di età, di peso e non ha bisogno di ricetta.

Ma perché questa libreria JavaScript si sta lentamente avvicinando alla fine dopo essere stata la migliore per tutto questo tempo?

Proviamo a capirlo 😉

 

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 utilità. 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

(…e non escludiamo di parlarvene presto 😉)

 

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.

Autore

Iacopo Ciao

Full Stack Developer, ama il suo lavoro e si impegna al massimo per soluzioni funzionali ed eleganti attraverso un codice flessibile ispirato a Robert C. Martin, Vaughn Vernon and Eric Evans.

Solitamente lavora in Java e Angular+ ma arricchisce la sua pagina GitHub con progetti personali in Flutter, React, NextJS e NestJS.

Tra le sue passioni, oltre la programmazione e il buon codice, non può mancare quella per la bistecca da buon fiorentino.

Si considera una persona curiosa, simpatica e che "saluta sempre".

Devmy su linkedinDevmy su linkDevmy su link

Contattaci.

Hai in mente un progetto?

Anche se - semplicemente - vuoi prendere un caffè con noi o vedere la nostra collezione di Action Figures scrivici tramite questo form.

Questo sito è protetto da reCAPTCHA e si applicano le Norme sulla privacy e i Termini di servizio di Google.

Ultimi Articoli