Каковы основные различия между StringTemplate и FreeMarker? - PullRequest
29 голосов
/ 18 сентября 2010

Сеть, кажется, полна сравнений между Velocity и FreeMarker, и они кажутся достаточно эквивалентными.Но, похоже, почти нет сравнений между StringTemplate и FreeMarker!

Итак, каковы основные различия между StringTemplate и FreeMarker?

Я бы использовал их только для генерации HTML-страниц.Из этих двух я бы ожидал, что FreeMarker будет более подходящим и более функциональным, поскольку это кажется более распространенным, но на первый взгляд кажется, что StringTemplate на самом деле имеет больше подходящих функций!

Было бы замечательно, если бы кто-то, кто использовал оба, успел прокомментировать - для фактических особенностей я могу просто читать документацию рядом, но я хотел бы кое-что начать.

Ответы [ 2 ]

34 голосов
/ 05 декабря 2010

Я разработал ST для сборки jGuru после того, как заболел моделью JSP «код в шаблоне».Скорость и друзья (то есть каждый другой движок, который я считаю) дают вам больше энергии, чем вам нужно.Я использовал в основном четыре функции для создания jGuru.com (как описано в paper ).Дополнительные функции не нужны и приведут вас к запутыванию вашей модели в шаблон.Если вы создаете одноразовый прототип, это нормально, и любой двигатель в порядке.Код в шаблонах в этом случае нормальный, так как вы не заботитесь об обслуживании.

Еще одна вещь, которую люди, кажется, игнорируют: как, черт возьми, графический дизайнер может читать код в шаблонах?Они не могут.Итак, как они могут работать с шаблонами тогда?Даже изменение порядка некоторых элементов может сломать вашу модель.Вы действительно нуждаетесь в разделении для работы в коммерческой среде, если только вы не хотите, чтобы сайт, похожий на кодер, создал HTML;)

8 голосов
/ 01 декабря 2010

Основное отличие состоит в том, что StringTemplate строго обеспечивает разделение вида модели, и вы не можете поместить логику в шаблоны, а FreeMarker позволяет вам использовать логику в шаблонах. Это, по крайней мере в начале, усложняет использование но это более масштабируемо Например, если вы генерируете код и у вас нет логики в шаблонах, генерация другого порта для другого языка менее утомительна, поскольку вам не нужно дублировать логику в каждом шаблоне.

Есть бумага от Теренса Парра, которая объясняет преимущества разделения модели и вида

...