LINUX.ORG.RU

[Java] Посоветуйте шаблонизатор под запросы.

 


0

0

Ищется шаблонизатор, удовлетворяющий таким запросам. Обязательно:

- HTML-валидный синтаксис. То есть никаких угловых скобок в качестве выделения тэгов.
- Возможность обращаться [по цепочке произвольной длины] к методам и свойствам переданных объектов

Желательно:
- Наследование шаблонов
- Не самая паршивая производительность

Может потом ещё что-то вспомню. Есть такие?

★★★★★

Вроде бы, Apache Velocity по первому взгляду подходит. Кто-нибудь с ним работал?

KRoN73 ★★★★★
() автор топика

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

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Наследования шаблонов в Velocity, насколько я знаю, нет, но есть включение. Я работала с ним, мне понравилось. Правда, у него есть одна багофича: он не позволяет обращаться к полям класса напрямую. То есть если написать object.fieldname, он всегда попытается вызвать getFieldname (есть костыль для обхода этого ограничения).

LucidFox
()
Ответ на: комментарий от LucidFox

>равда, у него есть одна багофича: он не позволяет обращаться к полям класса напрямую

А к методам? В примерах там этот вопрос как-то навскидку невнятно рассмотрен, глубоко ещё не копался.

...

Правда, как я понял, он не делает кеширования шаблона в каком-то промежуточном высокопроизводительном виде, а каждый раз парсит заново? Не слишком ли это будет тормозно?

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

С методами всё нормально, их можно вызывать.

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


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

LucidFox
()

Нифига не понял, как то неясно тема раскрыта. Так их не так и много в целом. FreeMarker, Facelets, Velocity, Spring MVC - посмотрите кажный. Конечно перечисленные - не одно и тоже, но страницы генерируют

vertexua ★★★★★
()
Ответ на: комментарий от LucidFox

>С методами всё нормально, их можно вызывать.

Это гут. Я всё равно не использую свойства в своих проектах. Тем более в Java с её особенностями при переопределении свойств в субклассах.

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


Я имел в виду иное. Скажем, в PHP приличные шаблонизаторы компилируют текст шаблона в чистый PHP. И при исполнении шаблона не интерпретируют шаблон каждый раз, а исполняют как нативный PHP со всеми бонусами, типа байткодового кеширования и т.п. Т.е. при использовании шаблона в конечном счёте не происходит никакого парсинга, только исполнение. Это часто обеспечивает шаблонам почти нативную скорость исполнения.

Нет ли тут такого же механизма или же при каждом исполнении шаблона он интерпретируется из исходного формата? Тогда, по идее, это должно быть очень медленно. Хотя это я уже позже бенчмарки сделаю, оценю...

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

У Velocity есть понятие ResourceLoader. По умолчанию оно кэширует все загружаемые шаблоны, но при помощи «<resource loader name>.resource.loader.cache = false» это можно отключить.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

>По умолчанию оно кэширует все загружаемые шаблоны

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

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

>а еще лучше - бенчмарк =)

Угу :)

KRoN73 ★★★★★
() автор топика

Вопрос, в чем преимущества сабжа перед jsp 2.1 ( кой включает EL) ?

wfrr ★★☆
()
Ответ на: комментарий от vorpal

Такого нет в Facelets. Главный плюс. Отсюда аццкая скорость

vertexua ★★★★★
()
Ответ на: комментарий от vorpal

>jsp компилируется в servlet

Я же о шаблонах спрашиваю. При чём с конкретными запросами.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от ef37

>А чем не устраивает тот же CFML ?

Беглый просмотр поверг в ужас. Как можно ТАКОЕ вручную писать?

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

>Беглый просмотр поверг в ужас. Как можно ТАКОЕ вручную писать?

Там не так уж все страшно. Даже проще по моему, чем пхп. И расширяется той же явой при необходимости.

ef37 ★★
()
Ответ на: комментарий от ef37

>Даже проще по моему, чем пхп

PHP в роли шаблонизатора - это тоже ужас. Я больше со всякими Smarty/Twig сравниваю.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

>PHP в роли шаблонизатора - это тоже ужас. Я больше со всякими Smarty/Twig сравниваю.

Smarty разве не в .php превращается ? :-)

Я не знаю как другие CFML-движки (их немало), а упомянутый Railo компиляет cfml-ку в .class, соответственно производительность не бог весть что, но достаточно приемлемая получается.

ef37 ★★
()
Ответ на: комментарий от KRoN73

А вообще белка верно сказала - для простых случаев того JSTL более чем

ef37 ★★
()

А почему не Lift? В соседней ветке человек хвалил

Karapuz ★★★★★
()
Ответ на: комментарий от KRoN73

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


Спроси у макскома, он перезагружает LOR каждый раз как меняет WAR-ник? Вряд ли, вроде tomcat подбирает обновленный файл на ходу

Karapuz ★★★★★
()
Ответ на: комментарий от Karapuz

> Вряд ли, вроде tomcat подбирает обновленный файл на ходу

обновляет, да не всегда и не всё

и вообще, деплоить варниками - бррр!

stevejobs ★★★★☆
()

если забить на «никаких угловых скобок в качестве выделения тэгов.», то gsp(grails) вроде подходит

thevery ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.