moment.js считается унаследованным проектом в режиме обслуживания. Это не мертво, но это действительно сделано.

Объекты moment.js изменяемы и довольно велики как пакет. Инструменты Chrome Dev начали показывать рекомендации по замене моментов для размера. Например, date-fns.js имеет уменьшенный размер 8 КБ по сравнению с уменьшенным размером Moment.js 288,4 КБ.

Причины

Есть три причины, по которым вам не нужно менять moment.js на другую библиотеку:

Поддержка браузера

хорошо работает в IE 8 и выше. У других библиотек также были проблемы с Safari (однако Day.js сообщает о совместимости с IE8 и выше).

Зависимость от других библиотек

библиотеки, которые используют момент как зависимость, не должны мигрировать в другую библиотеку, за исключением случаев, когда вы хотите реорганизовать свою библиотеку для использования другой.

Знакомство

если вы являетесь давним пользователем, у вас может быть опыт и понимание ограничений API.

из документации moment.js написаны рекомендации других библиотек по замене, таких как Luxon, Day.js, date-fns и js-Joda.

альтернатива - date-fns.js

date-fns.js предоставляет наиболее полный, но простой и последовательный набор инструментов для управления. Как лодаш для фиников. У него более 200 функций, с ума сойти!

Почему date-fns.js?

Есть несколько причин, по которым нам нужно использовать date-fns.js

  1. Модульный
  2. Родная дата
  3. Неизменный и чистый
  4. Машинопись и поток
  5. Быстрый (маленький размер)
  6. Простой
  7. Надежный
  8. Последовательный
  9. Другие предстоящие функции (активная разработка)

Статистика date-fns по сравнению с моментами

Проверено 7 августа.

Звезды на Github
Моменты: 47,5 тыс.
Дата-фнс: 32 тыс.

Последний выпуск
Momentjs: 06 июля 2022 г.
date-fns: 30 апреля 2023 г.

Настраивать

npm i date-fns

Я упомяну некоторые функции, которые в основном мы использовали.

Формат

Во-первых, нам нужно импортировать date-fns в наш проект.

import { format } from 'date-fns'

usage:
format(new Date(), "''Today is a' eeee") 
// it will show the day of the week

format(new Date(), "''Today is a' dd MMMM yyyy") 
// it will show full-date formatting

субдни

import { subDays } from 'date-fns'

usage:
format(subDays(new Date(), 3), "dd MMMM yyyy")

// subtract the days from the given amount

Мы можем комбинировать subDays с formatDistance

formatDistance(subDays(new Date(), 3), new Date(), {addSuffix: true})

Он покажет расстояние между заданными датами прописью.

Stackblitz: https://stackblitz.com/edit/stackblitz-starters-juum4b?file=src%2FApp.tsx

Заключение

Мы видим, что реализация date-fns проста и понятна. Это хорошая замена для momentjs. Есть много других функций, и я не привожу их в этой статье. Разберу несколько статей. Предположим, что эта статья предназначена только для ознакомления с мощными функциями date-fns.

Moment.js больше не рекомендуется для веб-разработки из-за его устаревшего статуса и известных недостатков. Разработчикам следует рассмотреть альтернативные библиотеки времени и даты для новых проектов, чтобы повысить производительность и уменьшить размер пакета.

Спасибо за внимание, пожалуйста, хлопайте, комментируйте, делитесь и следите за моими социальными сетями, чтобы не пропустить больше технических статей.

Хочешь узнать обо мне больше?

Пожалуйста, проверьте мое портфолио!

Инстаграм

Твиттер

ЛинкедИн

Хорошего дня!

Спасибо, что дочитали до конца. Пожалуйста, следите за автором и этой публикацией. Посетите Stackademic, чтобы узнать больше о том, как мы демократизируем бесплатное обучение программированию по всему миру.