Чем заменить Moment.js?
Недавно наткнулся на Reels, где говорили про то, что хватит юзать Moment.js, но в комментарии пришло кучу народу поспорить на этот счёт. При этом многие не знают, что на официальном сайте черным по белому написано:
We now generally consider Moment to be a legacy project in maintenance mode. It is not dead, but it is indeed done.
Когда-то Moment.js был стандартом для работы с датами в JavaScript. Но сейчас времена изменились, и использовать его больше не рекомендуется.
Во-первых, Moment.js — это тяжеловес. Его размер существенно увеличивает бандл, а в эпоху оптимизации это серьезный недостаток. Учитывая, что большая часть возможностей библиотеки уже покрывается нативными методами JS, использование Moment — это избыточность.
Во-вторых, Moment.js не является "immutable". Это означает, что объекты даты изменяются напрямую, что может привести к неожиданным результатам и багам в коде.
Вместо устаревшей библиотеки можно использовать альтернативы (кстати, их советуют разработчики Moment.js)
1. Day.js — практически полный клон Moment, но значительно легче по весу и быстрее. Если вы уже знакомы с Moment, переход будет максимально безболезненным.
2. date-fns — модульная библиотека. Удобно, что можно импортировать только те функции, которые нужны, а не тянуть все подряд.
3. Luxon — это библиотека от создателей Moment.js, но она более современная и использует возможности новых стандартов JavaScript.
Но на самом деле в огромном количестве случаев вам будет достаточно просто использовать возможности JavaScript.
Пример, как можно обойтись без сторонних библиотек:
const now = new Date();
console.log(now.toISOString()); // Текущая дата в ISO формате
const options = { year: 'numeric', month: 'long', day: 'numeric' };
console.log(new Intl.DateTimeFormat('ru-RU', options).format(now)); // Форматирование под локаль
Так что, если не требуется сложная работа с временными зонами или форматом дат, в современных проектах часто можно обойтись встроенными средствами.
❤️ - если узнал что-то новое