Diversity w polskim IT
Bulldogjob
Bulldogjob

Moment.js odchodzi na dobre

Zespół utrzymujący popularną bibliotekę Moment.js postanowił, że przestanie ją rozwijać i aktualizować, a sam projekt będzie od teraz określany jako legacy.
16.09.20202 min
Moment.js odchodzi na dobre

Zespół utrzymujący Moment.js, bibliotekę JavaScriptu do obsługi daty i czasu, która jest pobierana około 12 milionów razy w tygodniu, postanowił, że będzie ona od teraz projektem legacy i sugeruje developerom, aby zaczęli sobie szukać innych narzędzi. Mówią oni również, że Moment.js jest w tym momencie w maintenance mode i nie będzie dalej rozwijane. Oznacza to, że biblioteka nie otrzyma już nowych funkcji, zmian w API, usprawnień w działaniu oraz innych istotnych aktualizacji.

Co się natomiast nadal będzie pojawiało to fixy bezpieczeństwa i aktualizacje danych dotyczących bazy danych stref czasowych, prowadzonej przez IANA.

Moment.js do kosza

Pomimo tego, że coś się nadal będzie dla tej biblioteki pojawiało, to twórcy projektu zamierzają odsunąć developerów od Moment.js. A to prawdopodobnie dlatego, że coraz więcej ludzi zaczęło ostatnimi czasy narzekać na jej wady.

Co więcej, tweet od Addy’iego Osmani, inżyniera pracującego nad Google Chrome, mógł ostatecznie przekonać członków zespołu pracującego nad Moment.js, aby się z Moment.js ewakuowali. Zaproponował on narzędzie o nazwie Lighthouse (jest ono częścią ChromeDevTools), które zostało zaktualizowane do wyszukiwania rozdętych bibliotek i proponowania mniejszych alternatyw. 


Pomimo że Moment.js to na razie jedyna biblioteka, którą Lighthouse wskazało, to Osmani twierdzi, że następne będzie Lodash.

Problemy z Moment.js

Jednym z głównych problemów Moment.js jest to, że jest to stosunkowo duża biblioteka. Na domiar złego jest napisana w taki sposób, że nie jest podatna na tree-shaking, czyli proces, który pozwala na usunięcie z pakietu kodu, który nie będzie przydatny na produkcji. To sprawiało, że niezależnie jak małą część Moment.js wykorzystywano, trzeba było załączyć całą bibliotekę.

Co więcej, obiekty tej biblioteki są mutowalne, co oznacza, że użycie metod takich jak dodawanie lub odejmowanie przekształca wartość w oryginalnym obiekcie.

Na przykład:

var a = moment('2016-01-01'); 
var b = a.add(1, 'week');
a.format();
"2016-01-08T00:00:00-06:00"


Jak widać powyżej, zarówno zmienna a oraz b wskazują na ten sam obiekt, który uległ zmianie, co może przysporzyć wielu problemów. Nic dziwnego, iż zespół utrzymujący Moment.js przyznał, że ludzie często się na ten szkopuł skarżyli. Niemniej jednak maintainerzy twierdzą, że nie mogli dokonać tutaj żadnych zmian, ponieważ niemutowalne obiekty zepsułyby kompatybilność wsteczną biblioteki. 

Podsumowanie

Moment.js jeszcze parę lat temu był biblioteką, po którą bardzo chętnie sięgało wielu programistów JavaScript. Z biegiem czasu coraz bardziej zaczęły dawać się we znaki jej problemy, a obecnie w większości scenariuszy ma ona więcej wad niż zalet. Stąd decyzja o wysłaniu Moment.js na emeryturę. Niemniej jednak spodziewamy się, że Moment.js nie zniknie od razu, a popularność tej biblioteki będzie stopniowo maleć w przeciągu kilku kolejnych lat.

<p>Loading...</p>