Как не пользоваться библиотеками для работы с датой
Тема
Собрать частые кейсы форматирования даты и отображения её, показав как их сделать с помощью нативного JS, без использования библиотек.
Думаю, в начале статьи стоит сделать пояснение к тому, почему не стоит использовать библиотеку весом в 73 кб (https://bundlephobia.com/package/[email protected]), когда вам нужно сделать всего 2-3 преобразования дат на проекте.
Раскрыть возможности использования: .toLocaleTimeString(), .toLocaleDateString(), .toLocaleString(), Intl.DateTimeFormat.
Зачем
На самом деле очень часто на любых проектах вижу библиотеки по типу moment.js и т.п., просто для того, чтобы сделать время таким: 19:20, а дату отформатировать вот так: 17 декабря 2023 года.
Хотя это легко делается нативным JS, и даже dayjs становится абсолютно не нужен, хотя он уже хотя бы 3 кб весит, а не 71.
Кто напишет материал
- [ ] Я сам напишу этот материал
Вообще, можно сделать даже целый цикл статей в рамках спецпроекта наверное с общей темой: "Для этого вам не нужна библиотека". Буду рад услышать мнение редакции на этот счёт.
Вообще, можно сделать даже целый цикл статей в рамках спецпроекта наверное с общей темой: "Для этого вам не нужна библиотека". Буду рад услышать мнение редакции на этот счёт.
Согласна. Очень полезно будет.
@TatianaFokina хм, какие ещё статьи подобного рода можно написать? у меня из болей только jQuery, lodash и moment.js приходит на ум.
Наверное, можно написать даже что-то вроде: Вам не нужна UI библиотека. Недавно отказывался на одном из проектов от Vuetify, потому что весит дохрена, а 4 странички сверстать на чистом CSS вообще фигня...
@TatianaFokina хм, какие ещё статьи подобного рода можно написать? у меня из болей только jQuery, lodash и moment.js приходит на ум.
Как один из источников можно взять недавнее выступление Никиты Дубко — https://youtu.be/G_GwPX6hM9M
- компонент accordion на html
- lazy load картинок и iframe'ов
- компонент read progress
Отдельно можно добавить про Intl API
Бонус: "вам не нужен бандлер" или "вам не нужен build step" что бы рассказать про то как современная экосистема позволяет делать сложные (относительно) сайты без build step'a
Наверное, можно написать даже что-то вроде: Вам не нужна UI библиотека. Недавно отказывался на одном из проектов от Vuetify, потому что весит дохрена, а 4 странички сверстать на чистом CSS вообще фигня...
Можно ещё, кстати, про всякие Bootstrap/Tailwind тоже рассказать. Когда можно использовать, когда не целесообразно. Наверное, я бы даже не в формате рецепта это делала, а в разделе Веб-платформа. И можно расширить тему до того, когда достаточно нативных возможностей языков, а когда реально использовать фреймворки/библиотеки. Можно даже серией сделать. Для JS, для CSS/HTML.
Итого (схематично) получается:
- Работа с датой без библиотек.
- HTML-компоненты, которые можно не заменять div-ками. Сюда dialog, сюда select и остальные теги, которые часто заменяют, но это не всегде необходимо.
- Вам не нужен бандлер.
- Вам нужен build step.
- Вам нужен Bootstrap.
- Вам не нужен Lodash.
- Вам не нужна jQuerry.
Над названия нужно поработать будет, но кажется серия вырисовывается. Это то, что подымалось выше.
Думаю добавить ещё: Вам не нужны React/Vue, Вам не нужен axios, Вам не нужна ORM, Вам не нужна qs, Вам не нужен State Manager, Вам не нужен Vue/React Router, Вам не нужен UUID, что думаете?
И, такой вопрос. Я могу взяться за написание этой серии с середины апреля. По идее можно закрепить эту серию за мной, чтобы я написал большую часть вышеозвученного. Мне хочется это сделать, но мой перформанс не сильно велик. Если это не помешает, то с радостью напишу!
"Вам не нужно то", "вам не нужно это" 😄 Нигилистичный цикл статей
Надо будет правильно расставить акценты, что — выше приведённые технологии могут быть и нужны в ряде кейсов) А то можно подумать что во фронте ничего и не надо :)
@mnik01 ну я то и хотел, да.
Т.е. контекст статей будет таким: Вот для этого вам не нужна библиотека для работы с датой. Вот тут вам понадобтся библиотека для работы с датой. Вот советы по выбору библиотеки для работы с датой и аргументы, почему именно они.
Думаю, в начале статьи стоит сделать пояснение к тому, почему не стоит использовать библиотеку весом в 73 кб (https://bundlephobia.com/package/[email protected]), когда вам нужно сделать всего 2-3 преобразования дат на проекте.
Тут скорее стоит сравнивать с dayjs. А то с moment, который давно deprecated, слишком нечестное сравнение.
Вообще часто либа для работы с датами — это либо транзитивная зависимость в UI китах, либо необходимость, например для работы с таймзонами или разницы между датами. Для второго случая, конечно, можно написать свои хелперы, но в итоге мы реализуем уже готовый функционал какой-либо библиотеки, при єтом наш код будет менее оттестирован.
В целом, я думаю, что вопрос "подключать библиотеку для работы с датами и писать на ванилле" решится сам собой, поскольку сейчас на стадии 3 находится более удобное API для работы со временем Temporal API.
Лично я думаю попробовать перейти на него, как только его поддержит Хром. А браузерам без поддержки можно загрузить полифил.
Тут скорее стоит сравнивать с
dayjs. А то с moment, который давно deprecated, слишком нечестное сравнение.
Поспорю. Многим разработчикам не донесли, что он depreceted. На старых проектах, на которых я сидел, она осталась как легаси, там ещё понятно. Но на новых проектах, которые были сделаны совсем недавно - встречаю ту же проблему. По какой-то причине все игнорируют dayjs, ставя moment. Возможно потому что в гугле moment первее по их запросу, не знаю.
Но это личной мой опыт работы, так что тут могу ошибаться на счёт общей картины вещей.
Возьму себе. В целом, думаю актуально будет вернуться к обсуждению, и решить, как из этого сделать серию, о которой в комментах говорили. Идеи были вот такие примерно:
Итого (схематично) получается:
- Работа с датой без библиотек.
- HTML-компоненты, которые можно не заменять div-ками. Сюда dialog, сюда select и остальные теги, которые часто заменяют, но это не всегде необходимо.
- Вам не нужен бандлер.
- Вам нужен build step.
- Вам нужен Bootstrap.
- Вам не нужен Lodash.
- Вам не нужна jQuerry.
Помогите определиться с составом серии и названиями, я возьмусь за сами статьи)). У меня с названиями всегда беда.