Где я должен использовать шаблоны и где я должен генерировать объекты вида программно? - PullRequest
1 голос
/ 05 сентября 2011

Я использую Backbone.js для приложения, включающего множество различных представлений, некоторые вложенные другие представления, и эти другие представления могут дополнительно вложить другие представления.

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

Исходя из мираВ Adobe Flex я привык почти полностью объявлять свои представления с помощью разметки, даже глубоко вложенной или составной.Flex делает объявление компонентов в разметке простым куском.

Я надеялся, что смогу добиться такого же разделения между чистым представлением представления и логикой представления в Backbone, но до сих пор я боролсяс этим.

Причина этого заключается в том, что я никоим образом не могу объявить составное представление только с использованием шаблонов.Таким образом, мне приходится прибегать к использованию метода render () BB для создания экземпляров подпредставлений и добавления их к родителю.Это нормально ... но если представления становятся действительно детализированными, объявлять их с помощью JS - это излишнее убийство, потому что я буквально заканчиваю тем, что добавляю чистые строки HTML, что является полным беспорядком.Это означает, что гораздо лучше использовать шаблоны для этих шаблонов, а затем просто визуализировать шаблон вместо того, чтобы выполнять всю работу с использованием JS.

Использование обоих подходов просто нарушает любую согласованность в приложении, но я стараюсьчтобы быть в порядке с этим, потому что я прочитал много (даже профессионально написанного) кода Backbone, и я видел других людей, борющихся с тем же.

Если я не могу избежать этого разделения подходов рендерингатогда, по крайней мере, мне нужно будет установить какие-то определенные границы, какие виды должны отображаться с помощью шаблона, а какие нет, или только частично.Вопрос в том, какими будут эти критерии.

1 Ответ

2 голосов
/ 05 сентября 2011

Моя методика состоит в том, чтобы вся разметка содержалась в шаблонах.

Моя концепция Backbone Views заключается в том, что они на самом деле являются контроллерами. Если вы рассматриваете Controller в более традиционной среде веб-приложений, их задача - получать события, моделировать маршалы, извлекать и отображать шаблоны, передавать модели и возвращать полученный результат.

В Backbone представления являются элементами, отвечающими за эту задачу. Но вместо того, чтобы http находился в среде ввода / вывода, DOM является средой ввода / вывода.

Итак, я считаю, что Views - это контроллеры для определенной области пользовательского интерфейса на экране. Они прослушивают события, маршалируют модели, выбирают и отображают шаблоны и в результате модифицируют DOM.

Решение о том, когда начинать создавать подпредставление и, возможно, рендерить шаблон в цикле, для меня довольно непросто.

Если он может использоваться в нескольких видах, я сделаю из него вид.

Если у него есть какие-либо события или взаимодействия с пользователем, которые влияют на себя, но на самом деле ничего на «родительском» объекте я не буду делать из этого.

Если у него есть какая-то реальная логика, я сделаю из этого взгляд.

Если это родственная модель или коллекция, я сделаю из нее вид.

Но в любом из этих случаев представление напрямую не генерирует HTML - я всегда буду хранить разметку в шаблоне.

...