Прекращение разработки библиотеки Moment.js, имеющей 12 млн загрузок в неделю

Разработчики JavaScript-библиотеки Moment.js объявили о прекращении разработки и переводе проекта в режим сопровождения, подразумевающем остановку расширения функциональности, заморозку API и ограничение активности исправлением серьёзных ошибок, отражением изменений из базы часовых поясов и поддержанием инфраструктуры для существующих пользователей. Для новых проектов Moment.js применять не рекомендуется.

Библиотека Moment.js предоставляет функции для манипуляций со временем и датами и является стандартом де-факто в своей области. Еженедельно библиотеку загружают около 12 млн раз. Причиной принятого решения стало осознание, что проект устарел и не укладывается в современные парадигмы разработки на JavaScript.
Из недостатков упоминается относительно большой размер библиотеки (329KB без сжатия, 70КБ со сжатием) и использование изменяемых объектов (mutable, изменении копии объекта moment приводит к изменению оригинала).

В обзорах также упоминаются такие проблемы Moment.js, как низкая производительность, запутанность API, отсутствие поддержки «Tree shaking» (урезание неиспользуемого кода для сокращения размера web-приложения) и трудоёмкость отладки. Судя по всему, последней каплей, подтолкнувшей разработчиков к решению о переводе Moment.js в режим сопровождения, стало изменение в системе аудита web-страниц Lighthouse, встроенной в инструменты для web-разработчиков Chrome — несколько дней назад Lighthouse стал выдавать предупреждение об излишней раздутости кода Moment.js и предлагать альтернативы для замены.

Современные браузеры предоставляют встроенный API Intl для работы с локалями и часовыми поясами. Данный API используется в библиотеке Luxon, созданной одним из участников разработки Moment.js и преподносимой как следующий шаг эволюции Moment.js. Кроме Luxon в качестве вариантов для замены упоминаются библиотеки Day.js (минималистичный вариант Moment.js с похожим API, занимает около 7КБ без плагинов), date-fns, js-joda (порт java.time) и штатные JavaScript-объекты Date и Intl, а также находящийся в состоянии черновика API Temporal.

Источник: opennet.ru

Добавить комментарий