Moment.js przechodzi w tryb utrzymania

Podstawowe zadania dotyczące formatowania daty i czasu można wykonać dzięki klasie Date JavaScriptu. Do trudniejszych zadań była przeznaczona zewnętrzna biblioteka Moment.js. Pozwala ona na kontrolę i daje większą swobodę w manipulacji czasem. Od 2011 roku bibliotekę wykorzystano w milionach projektów.
Jednak Moment.js zbudowano dla poprzedniej ery JS, dzisiaj wiele elementów wygląda już zupełnie inaczej. Dla twórców tej biblioteki ważniejsze jest utrzymanie stabilności biblioteki niż dodawanie nowych funkcji. Dlatego też twórcy wydali informację:
Obecnie uważamy Moment.js za starszy projekt w trybie utrzymania. Nie umarł, ale niezaprzeczalnie jest skończony.
Co „utrzymanie” oznacza dla projektów z Moment.js?
Utrzymywanie biblioteki w trybie utrzymania oznacza przede wszystkim brak nowych funkcji i możliwości. Twórcy nie planują także zmian API Moment na niezmienny stan. Nie będą także rozwiązywać problemów z rozmiarem paczki. W przypadku znanych od dawna błędów twórcy także mogą ich już nie naprawiać.
Stan utrzymania oznacza jednak, że główni programiści biblioteki zamierzają rozwiązywać pojawiające się krytyczne problemy. Będą pojawiać się także aktualizacje danych dla stref czasowych Moment.js po wydaniu bazy IANA.
Skargi na Moment.js
Wielu programistów skarżyło się przede wszystkim na rozmiar biblioteki. Każdy programista stara się optymalizować rozmiar swojej aplikacji do minimum, a Moment.js nie należy do najlżejszych bibliotek. Ponadto współpraca z nowoczesnymi algorytmami potrząsania drzewem wykazywała tendencję do zwiększania rozmiarów aplikacji.
Kolejnym argumentem przeciwnym bibliotece były jej zmienne obiekty. Oznacza to, że operacje takie jak dodawanie czy odejmowanie, przekształcały wartość w oryginalnym obiekcie:
var a = moment('2016-01-01'); var b = a.add(1, 'week'); a.format(); "2016-01-08T00:00:00-06:00"
Rewolucją byłaby ich zmiana na niezmienny stan. Jednak uczyniłoby to z Moment.js zupełnie nową bibliotekę. Twórcy biblioteki uznali, że ważniejsze jest zachowanie zmiennego API, ponieważ niezmienne obiekty znajdują się już w innych bibliotekach.
Czy warto zostać przy Moment.js?
Warto jednak pozostać przy bibliotece w kilku przypadkach. Przede wszystkim biblioteka działa w przeglądarkach IE 8 i nowszych. Wiele bibliotek, w przeciwieństwie do Moment.js, wykazywało także problemy w działaniu w Safari. Co ważne, kilka bibliotek przyjmuje Moment jako zależność. Dlatego też często sensowniejsze jest kontynuowanie pracy z Moment niż włączanie kolejnej biblioteki daty i godziny.
Alternatywy dla biblioteki
Dotychczasowi użytkownicy mogą rozważyć kilka innych opcji obsługujących daty i godziny. Wśród bibliotek warto zerknąć na Luxon, Day.js, js-Joda oraz date-fns. Pierwsza z nich często jest określana jako „ewolucja Momentu”, z kolei Day.js jest bardziej minimalistyczna biblioteka. Date-fns oferuje szereg funkcji do manipulowania obiektami Date JS. Ostatnia biblioteka, js-Joda jest podstawą implementacji JSR-310 Java SE 8 pakietu Java.time.
Źródło: Moment.js