Pochi giorni fa vi abbiamo parlato di Moment.js, libreria JavaScript per gestire le date, e del perché non dovremmo più utilizzarla. Ma adesso?
Come già accennato, abbiamo a disposizione diverse alternative:
Tutte le soluzioni elencate sono estremamente valide: mettono a disposizione delle API immutabili e forniscono i file di definizione per TypeScript (a eccezione di Luxon che si appoggia a @types).
A questo punto dipende solo da quello di cui ha bisogno il nostro progetto: Performance? Integrazioni? Peso complessivo?
Queste statistiche possono aiutarci nella scelta:
Il grafico sottostante mostra il tempo medio che le librerie impiegano a svolgere le operazioni comuni di manipolazione.
Dimensioni: Day.js, date-fns, Luxon, JS-Joda.
Ognuna di queste librerie eccelle in qualcosa ma, tra tutte, quella che più ha attirato la nostra attenzione è JS-Joda (e non solo perché il nome somiglia a qualcuno che stimiamo profondamente…).
JS-Joda non ha un aspetto un po’ Javoso?
Forse perché questa utility è il porting del backport Threeten, che è la base per l'implementazione JSR-310 del pacchetto Java SE 8 java.time (mentre Threeten si ispira a Joda-Time, condividendo concetti molto simili se non lo stesso autore).
Gestire le date è la via per il Lato Oscuro. Le date conducono all'ira, l'ira ai bug; il bug conduce alla sofferenza. Ah… sento molti bug in questo codice.
Considerata la più grande libreria Jedi dell’epoca, JS-Joda è uno dei più abili utilizzatori delle date nella storia della galassia. Basato sul sistema del calendario ISO, mette a nostra disposizione oggetti totalmente indipendenti dal nativo, semplici e immutabili. Grazie a queste caratteristiche è in grado di manipolare le date a suo piacimento, validare i formati influenzati dal lato Oscuro e formattare con grande vigore.
JS-Joda è una libreria Vanilla senza dipendenze di terze parti e può essere inclusa in qualsiasi progetto JavaScript (o TypeScript): questo perché le librerie Jedi sono chiamate a portare la pace e la giustizia su tutti gli Stack Node della galassia, soprattutto in quelli minacciati dal lato Oscuro delle Date e del context switching.
Come già detto, la scelta di una libreria JavaScript dipende da quello di cui ha bisogno il nostro progetto. Ma ecco i motivi per i quali JS-Joda ha attirato la nostra attenzione:
JS-Joda è estremamente veloce. È da 2 a 10 volte più veloce delle librerie competitor. 🚀
Il pacchetto minificato e compresso pesa solo 43kb ed è privo di ulteriori dipendenze.
JS-Joda fornisce al suo utilizzatore il suo set di definizioni TypeScript, senza la necessità di appoggiarsi a progetti terzi come @types.
JS-Joda implementa le sue entità temporali in maniera indipendente dall’oggetto nativo Date, al contrario di librerie come Moment.js o date-utils che fanno semplicemente da wrapper.
A differenza di Moment.js, JS-Joda è immutabile: i bug a causa di aliasing inaspettati non erano previsti nel suo addestramento.
Le sue API sono modellate sulla base del Domain Driven Design, con classi per ciascuno dei diversi casi d'uso, come LocalDate, ZonedDateTime o Period.
Questa libreria vanta più di 1700 test case eseguiti tramite karma su Firefox, Chrome, Node e Pantomjs, portandosi dietro le permutazioni di test del progetto Threetenbp.
Nonostante non sia sulla vetta dei download più elevati di npm, JS-Joda è un’ottima libreria per la manipolazione di date, con API intuitive per l’utilizzatore e estremamente veloci a runtime.
Un enorme punto a favore (imho) è quello di derivare da Threeten e Joda-Time, ereditando tutta l’esperienza incapsulata nel loro codice e la vastità di casi d’uso raccolti nel tempo dall’enorme community di Java.
E poi, diciamolo, ha decisamente il nome più figo 😉.
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".
Vuoi sviluppare un progetto con noi?
Anche se - semplicemente - vuoi prendere un caffè con noi o vedere la nostra collezione di Action Figures scrivici tramite questo form.