Я занимаюсь интеграцией Backbone и Backbone.Marionette в существующий проект веб-приложений. В настоящее время мы планируем оставить все существующие функциональные возможности в проекте, но с любой новой функциональностью мы воспользуемся структурированием Backbone и принципами Marionette. Одним из первых заказов является решение о библиотеке визуализации HTML-шаблона, а также решение для привязки данных для этих шаблонов. Раньше мы использовали JsRender и JsViews для всех наших потребностей в шаблонах и привязки данных, но мы готовы исследовать новые возможности для нашей новой функциональности. Поэтому я в основном изучал различные решения и теперь нуждаюсь в советах или мыслях о том, что выбрать. Вот что я до сих пор смотрел:
Плюсы: Кажется, следует придерживаться базовой концепции разделения на проблемы, которые помогают сохранить ваши шаблоны очень "чистыми".
Минусы: Похоже, вам нужно написать немного больше кода в своих представлениях, чтобы определить привязки. Кроме того, кажется, что у вас нет возможности выполнять условный рендеринг, поэтому вы всегда должны отображать полный шаблон и просто переключаться на отображение определенных элементов.
Плюсы: обрабатывает немного больше параметров привязки данных в шаблоне, не делая его слишком грязным.
Минусы: Также, кажется, не хватает условного рендеринга.
Плюсы: обрабатывает все виды привязки данных через атрибуты.
Минусы: легко начать "загрязнение" шаблона конверторами. Необходимо добавить еще один шаг, чтобы создать модели представления Knockout из моделей Backbone.
Плюсы: похоже на способности нокаута, но с различным синтаксисом. Обработка условного рендеринга.
Минусы: в прошлом мы загрязняли наши шаблоны, добавляя слишком много бизнес-логики в шаблон, но это может быть проблемой нашего развития, которую мы можем исправить. Необходимо создать функциональные возможности для привязки функциональности наблюдаемости JsViews к событиям модели Backbone. Другие библиотеки, такие как StickIt и Knockback, автоматически обрабатывают это.
Мы также рассмотрели Backbone.ModelBinder, который находится где-то между StickIt и Rivets.
Может ли кто-нибудь поделиться любыми решениями, которые они сделали, и почему они выбрали один плагин/библиотеку над другим? Я также открыт для других предложений. Спасибо.