Подтвердить что ты не робот

В чем основные отличия между StringTemplate и FreeMarker?

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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