В проекте дату нужно выводить в двух форматах:
- From now - 4 min ago
- MMM, YYYY - Jan, 2014
Пример:
Handlebars.registerHelper "date_format", (date, options) ->
moment(date).format('MMM, YYYY')
Handlebars.registerHelper "from_now", (date, options) ->
moment(date).fromNow()
<i class="icon-clock"></i>
{{from_now date_posted}}
...
<li><span>Start Date:</span> {{date_format start_date}}</li>
Задача - выпилить библиотеку moment, ибо ради двух функцию грузить 11.6k gz для проекта много.
Вопрос: как архитектурно правильнее это сделать?
Варианты:
1. Сделать отдельный маленький модуль DateUtil, пихнуть туда две функции кастомного форматирования. Добавить два вью хелпера, которые вызывают функции DateUtil. В шаблонах вызываем хелперы.
2. Не делать отдельного модуля, написать логику форматирования прямо во вью хелперы.
3. Ваше решение.
Критика предложенных вариантов
1.
- Лишний модуль, если форматирование не будет использоваться нигде, кроме вьюшек
- Продолжение пункта выше: лишняя композиция. Тело хелпера просто вызывает функцию DateUtil
- Не ясно как назвать метод для второго типа дат
2.
- Нет возможности использовать вью хелпер, если форматирование понадобиться где-то кроме вьюшке
- Не ясно как назвать метод для второго типа дат