Библиотеки обработки дат

Чтобы легко обрабатывать объекты Date в проекте с помощью Google Calendar API, я использовал библиотеку с открытым исходным кодом. Среди них я использовал momentjs и date-fns. И опубликуйте здесь то, что я чувствую после использования этих двух библиотек и производительности, которые сравнивают друг друга.

momentjs

Я думаю, что это самая популярная библиотека дат. Простота использования, поддержка различных функций для работы Date. Это определенный тип объекта и используется как new Date(). Для вашего удобства он поддерживает неупорядоченный параметр функции, хотя сейчас он устарел.

momentjs был создан для обработки даты / времени и набора этих концепций. По этой причине это может быть библиотека ООП.

дата-фнс

date-fns - это набор «функций» для обработки собственного объекта Date в отличие от momentjs. date-fns имеет столько же функций, сколько и momentjs. Но он может импортировать только те функции, которые вам нужны, в отличие от momentjs.

Разница

Эти две библиотеки имеют некоторую разницу.

Концепция

momentjs - это библиотека ООП. Создайте экземпляр momentjs и запускайте из него функции.

Но date-fns - это набор функций. Используйте собственный объект Date и выполните операцию с объектом Date.

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

Размер

У momentjs все свои функции как функция-член. Поэтому вам нужно импортировать все функции, даже если вам нужна только функция «Добавить». Как только вы создадите экземпляр, все функции будут включены.

date-fns делится по функциональному уровню. Таким образом, вы можете импортировать и использовать только то, что вам нужно.

По этой причине, в результате сборки веб-приложения, как правило, momentjs имеет больший размер, чем date-fns. (Без тряски дерева)

Представление

Из заключения, чтобы считать производительность, рекомендую использовать date-fn. В momentjs после создания экземпляра он начинает инициализировать переменные-члены. На этом шаге много проверок, чем вы думаете. После этого шага, наконец, создайте собственный экземпляр Date и сохраните его. Другими словами, на создание экземпляра momentjs уходит больше времени, чем на собственный Date its.

time of 'new Moment()' = time of 'new Date()' + α

Другой пример, в операции «Добавить», у momentjs есть предварительная обработка перед реальной операцией добавления. Сначала неупорядоченные параметры параметров все еще работают, хотя они устарели. Из-за этого выполняется проверка параметров. А операции добавления для дня, месяца, года и т. Д. Обрабатываются функцией «Добавить». Итак, код, который должен быть определен, запускается. По этой причине большое количество кода, не имеющего отношения к тому, что вы хотите, запускается по сравнению с date-fns.



date-fns / date-fns
date-fns - ⏳ Современная служебная библиотека даты JavaScript ⌛️ github.com



Фактически, функция добавления в date-fns очень проста и понятна, поскольку разделена по дню, месяцу, году и т. Д. Функция addDays имеет всего несколько строк.

Более четкое различие между приложениями, отображающими ежедневное и ежемесячное расписание, можно найти в Google Calendar API. По сравнению с date-fns и momentjs, он имеет разницу в производительности примерно в 8-10 раз.

Заключение

ООП momentjs и функция date-fns имеют одинаковую цель для обработки объекта Date, но имеют много различий, таких как неизменяемые и изменяемые, ООП и функции и так далее. выбирайте библиотеку на свой вкус. но по производительности выигрывают date-fns. По размеру результата, если вы правильно используете встряхивание дерева, momentjs может уменьшить его размер. А модуль локали можно удалить, если вы им не пользуетесь. Тогда я думаю, что momentjs можно уменьшить так же, как date-fns. Размер файла может быть одним из факторов производительности. потому что это влияет на передачу. В любом случае производительность date-fns лучше, чем momentjs. (Есть некоторые исключения, но полностью date-fns - это общее) Так что, если вы рассматриваете производительность, используйте date-fns.