Магистраль: привязка модели к шаблону и привязка шаблона к модели

Я занимаюсь интеграцией Backbone и Backbone.Marionette в существующий проект веб-приложений. В настоящее время мы планируем оставить все существующие функциональные возможности в проекте, но с любой новой функциональностью мы воспользуемся структурированием Backbone и принципами Marionette. Одним из первых заказов является решение о библиотеке визуализации HTML-шаблона, а также решение для привязки данных для этих шаблонов. Раньше мы использовали JsRender и JsViews для всех наших потребностей в шаблонах и привязки данных, но мы готовы исследовать новые возможности для нашей новой функциональности. Поэтому я в основном изучал различные решения и теперь нуждаюсь в советах или мыслях о том, что выбрать. Вот что я до сих пор смотрел:

Backbone.StickIt:

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

     

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

Rivets.js:

Плюсы: обрабатывает немного больше параметров привязки данных в шаблоне, не делая его слишком грязным.

     

Минусы: Также, кажется, не хватает условного рендеринга.

Knockback/Knockout:

Плюсы: обрабатывает все виды привязки данных через атрибуты.

     

Минусы: легко начать "загрязнение" шаблона конверторами. Необходимо добавить еще один шаг, чтобы создать модели представления Knockout из моделей Backbone.

JsViews:

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

     

Минусы: в прошлом мы загрязняли наши шаблоны, добавляя слишком много бизнес-логики в шаблон, но это может быть проблемой нашего развития, которую мы можем исправить. Необходимо создать функциональные возможности для привязки функциональности наблюдаемости JsViews к событиям модели Backbone. Другие библиотеки, такие как StickIt и Knockback, автоматически обрабатывают это.

Мы также рассмотрели Backbone.ModelBinder, который находится где-то между StickIt и Rivets.

Может ли кто-нибудь поделиться любыми решениями, которые они сделали, и почему они выбрали один плагин/библиотеку над другим? Я также открыт для других предложений. Спасибо.

Ответ 1

Я использовал эти

Mustache.js

Pro: не только усы поддерживают привязку переменной, но также могут обрабатывать привязку функций. Например, вы можете иметь

<a href="{{test}}" >click me </a>

И тогда у вас есть метод, называемый test. Это экономит много избыточного назначения класса /id для связи и привязывает событие в классе View.

Con: Мне не нравится его синтаксис.

Далее я использую coffeescript в Ruby on Rails, который имеет встроенную систему jost eco templating. pro, у вас есть шаблоны в отдельных файлах. В pageload они получают привязку к глобальной переменной в dom. Они минимизированы и лучше, чем некоторые теги шаблона script. Другой профессионал, вы пишете, если еще и для циклов, как вы делаете в рубине. Недостатком является то, что они используют метки бритвы и не позволяют легко смешивать с кодом сервера (например, перевод).

Другая библиотека - это символ подчеркивания шаблонов. Очень простой, но довольно мощный. Proside, у вас уже есть это (подчеркивание необходимо для магистрали). Недостатком является то, что вы не можете (по умолчанию) загрузить шаблон из внешнего файла. Я решил это, используя код serveride (require_once, render partial). Однако если вы используете require.js вместе с текстовым плагином (http://requirejs.org/docs/download.html#text), вы можете загрузить шаблоны в качестве зависимости.