È tempo di JS-Joda, ma attento al Lato Oscuro!

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:

 

Quale libreria JS scegliere?

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:

 

Performance

Il grafico sottostante mostra il tempo medio che le librerie impiegano a svolgere le operazioni comuni di manipolazione.

 

unnamed (6).png

Da Best Moment.JS Alternatives di Jakub Kozak.

 

Stelle su GitHub

Articolojoda-tab1 (1).jpg

Pacchetti dipendenti

Articolojoda-tab2 (1).jpg

Issues aperte

Articolojoda-tab3 (1).jpg

Dimensioni

Articolojoda-tab4 (1).jpg

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).

 

JS-Joda

 

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.

 

Dove si utilizza JS-Joda?

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.

 

Perché dovrei usare JS-Joda?

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:

Veloce

JS-Joda è estremamente veloce. È da 2 a 10 volte più veloce delle librerie competitor. 🚀

Leggero

Il pacchetto minificato e compresso pesa solo 43kb ed è privo di ulteriori dipendenze.

TypeScript

JS-Joda fornisce al suo utilizzatore il suo set di definizioni TypeScript, senza la necessità di appoggiarsi a progetti terzi come @types.

Standalone

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.

Immutabile

A differenza di Moment.js, JS-Joda è immutabile: i bug a causa di aliasing inaspettati non erano previsti nel suo addestramento.

Domain Driven Design

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.

Robusto

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.

 

Conclusioni

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 😉.

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.

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.

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

Ultimi Articoli