Какая технология шаблонов HTML в Java наиболее близка к Ruby (erb/haml)?
-
03-07-2019 - |
Вопрос
Среди Явы шаблонные решения такие как Apache Velocity, Freemarker, Hamlets, Tapestry, StringTemplate, JSP, JSP Weaver (другие?), которые наиболее точно соответствуют краткости и простоте аналогичных решений для шаблонов HTML в Ruby - haml/erb.Меня беспокоит как синтаксис шаблонизатора, так и то, насколько просто он интегрируется с кодом контроллера на сервере.
Решение
я думаю, ты к этому клонишь
Рубин
<% foreach vars do |var| %>
<!-- some html code to do -->
<%=h var %>
<% end %>
Джава
<% for( int i = 0; i < vars.length; i++ ) { %>
<%=vars[i]%>
<% } %>
так что теги похожи
для Java-стороны контроллера представления Spring предоставляют возможность красиво их разделить.
Другие советы
Практика смешивания кода и данных неодобрительна в Java гораздо больше, чем в Ruby. Рекомендуемая практика Java заключается в использовании тегов вместо блоков кода. Я упоминаю об этом только потому, что если вы пишете свои шаблоны Java так же, как типичные шаблоны Ruby, другие разработчики Java (я полагаю, вы работаете в команде), скорее всего, будут жаловаться.
Итак, теперь, чтобы ответить на ваш вопрос ..... стандартные JSP вместе с JSTL и EL на самом деле не плохое решение. Но для большей краткости, проверьте GSP, шаблонное решение, используемое Grails. Вы можете использовать GSP в любом веб-приложении на Java, то есть вам не нужно использовать Groovy / Grails.
... Вы даже можете использовать PHP, если хотите использовать Quercus . Тогда вы, как и JSP, Velocity и т. Д., Можете использовать их как «представление» и пружину или распорки и т. Д. Для управления контроллером (ами).
Проект, который мы делали некоторое время назад, был с JSP и стоек и весной. Все они прекрасно интегрировались, и мы могли сделать то, что было описано.
Большинство механизмов рендеринга / шаблонов имеют различный синтаксис. Преимущество (и чудовище) Java в том, что вы можете выбрать, какой синтаксис вам удобнее, и использовать его с вашим контроллером / контейнером по выбору.