Думы о шаблонах

Nov 16, 2010 01:32


У меня есть очередной вопрос к вам, мои уважаемые читатели. Задумался я над таким феноменом, как шаблонные движки, в простонародье templating engines. Следующие варианты мне встречались:
Html с вкраплениями своего языка

Примеры: собственные шаблоны веб-фреймворка (django templates), универсальные шаблонные движки (velocity, freemarker), в т.ч. и межязыковые (mustache, xslt), иногда даже запускается на клиенте (jQuery Templates)

Плюсы:
  • в языке шаблона можно реализовать все то, чего не хватает в языке и библиотеках (не все по этому пути идут, впрочем);
  • можно специально ограничить возможности шаблона, форсируя разделение view & controller, заставив выносить все мало-мальски сложные вещи в контроллер;
  • прост в изучении (проще полноценного языка программирования);
  • обычно может генерировать любой текст, не только html.

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

Примеры: jsp, mako templates, ERB (Embedded Ruby), php.

Плюсы:
  • доступны все возможности языка (ну или почти все);
  • не нужно учить второй язык, если ты программист (дизайнерам, впрочем, все равно нужно);
  • обычно может генерировать любой текст, не только html.

Минусы:
  • дизайнерам придется учить основы полноценного языка;
  • никто не дернет за руку, если начнешь писать бизнес-логику в шаблонах (think php);
  • при недосмотре злодей может позвать из шаблона System.exit(0) и делать другие плохие вещи;
  • шаблоны тоже не являются чистым html.
Шаблоны остаются html, который модифицируется извне

Примеры: wicket, lift, enlive.

Плюсы:
  • шаблон в чистом html понятен дизайнеру, он его может править сам в середине разработки и т.д.;
  • имея в контроллере объектную модель html-странички, можно всякие продвинутые штуки делать: обновлять компоненты, менять DOM из контроллера.

Минусы:
  • все вещи за пределами «поменять атрибут» и «повторить этот кусок N раз» делаются очень сложно;
  • контроллер начинает работать за view - генерировать иерархию компонентов и т.п.;
  • подходит только для xhtml-я, максимум - xml-я.
Вообще не html

Примеры: haml

Плюсы:
  • синтаксис более изящен, чем у html.

Минусы:
  • надо учить отдельно;
  • может оказаться недостаточно гибким;
  • годится только для html-я.

Html не идеален, но не настолько. Это стандарт, который знают, с которым работают, который поддерживают все.
Внимание, черный ящик вопросы

Собственно, что меня интересует, и в чем я рассчитываю на вашу помощь:

  1. Что заставляет людей выдумывать свой птичий язык? Понятно, что для убогой (Java) это необходимость, но для нормальных языков вроде python? Неужели он настолько сложен для дизайнеров? Или здесь важнее безопасность? Или что?

  2. Когда они уже угомонятся и хотя бы синтаксис какой-нибудь стандартный/общий будут использовать? Это, скорее, риторический скорее вопрос :)

  3. Существуют ли нормальные реализации варианта 3, лишенные выписанных недостатков?

  4. Существуют ли какие-нибудь продвинутые разработки про поддержку аякса (то есть чтобы удобно гонять туда-сюда html-сниппеты и джаваскрипты всякие) в вариантах 1-2? Я к этому скорее скептически отношусь, но вдруг я чего-то не знаю? Было бы хорошо.

  5. Возможно, я что-то забыл, упустил, не так понял?

Спасибо!

нужна ваша помощь, веб-шмеб, девелопмент

Previous post Next post
Up