На самом деле это действительно интересный вопрос, потому что он раскрывает некоторые интересные дизайнерские решения.
Я предпочитаю рендеринг частичных шаблонов, потому что это дает моим приложениям возможность меняться со временем.Если мне нужно перейти с <table>
на <div>
с диаграммой, это легко включить в шаблон.Имея это в виду, я рассматриваю почти каждую страницу как совокупность множества небольших шаблонов, которые могут измениться.Стандартные леса Grails 2.0 сместились в сторону этого типа подхода, и это хорошая идея.
Вопрос в том, должны ли они быть шаблонами на стороне клиента или на стороне сервера, суть проблемы.
Шаблоны на стороне сервера сохранят чистоту разметки при начальной загрузке страницы.Даже если вы используете что-то вроде Усы из ICanHazJS , вам, скорее всего, нужно иметь пустой элемент на странице (что-то с вашим шаблоном), стилизовать его соответствующим образом и работать с ним вJavascript для того, чтобы получить обновленную информацию.
Недостатки
- "болтливые" приложения
- большие конверты по проводам (ответы включают HTML, который можно считать статическим)
- более медленный пользовательский интерфейсвремя отклика
Преимущества
- Подходит для людей с большим языковым опытом на стороне сервера
- Возможно, проще манипулировать или изменять в среде на стороне сервера (например, вернуть страницу, содержащую несколько шаблонов, которые загружаются и включаются программным способом)
- Хранит большую часть содержимого приложения "в одном месте"
Клиентские шаблоны могут реально уменьшить серверЗагрузите, однако.Они делают приложение «менее понятным», так как потенциально вы можете минимизировать количество обратных вызовов на сервер, отправляя обратно большие коллекции JSON (с тем же числом байтов или меньше, которое будет обрабатываться HTML вшаблонная схема на стороне сервера).Они также делают пользовательский интерфейс очень быстрым для пользователей, так как нажатие на ссылку «обновить» не обязательно должно выполнять обход AJAX.Кто-то сказал:
Энтони Иден @aeden 10 декабря Ответить Ретвиты Фаворит · Откройте будущее веб-приложений: запросы обрабатываются функциями, логика всегда асинхронна и HTML никогда не генерируется на сервере.
Недостатки
- Не подходит для SEO (несемантические посторонние элементы пользовательского интерфейса при начальной загрузке страницы)
- Требуется некоторое количество javascript foo (для управления элементами)
Преимущества - Отзывчивый - Меньшие конверты
Тенденции, похоже, движутся в сторону шаблонов на стороне клиента, особенно с мощью, предоставляемой дополнениями HTML5 (такими как <canvas>
) ... но еслииспользование их требует, чтобы вы полагались на технологии, с которыми вы не очень хорошо знакомы, и вы чувствуете себя более комфортно с партиалами Grails, возможно, стоит начать с них и исследовать рефакторинг в сторону шаблонов на стороне клиента на основе производительности и других проблем позже.