Каждый, кто занимался разработкой веб-приложений в Scala, знает, что вы можете использовать любой существующий веб-фреймворк Java или Lift.Общим для всех этих фреймворков является то, что им всем требуется два или более файлов для генерации страницы: некоторый HTML-шаблон и один или несколько классов для обеспечения связанной логики.Даже если вы пишете приложение только для JSP, вы, вероятно, по-прежнему используете множество пользовательских тегов.
И это подводит меня к тому, что я заметил: файлы шаблонов часто мало похожи наHTML.Файлы шаблонов Wicket в значительной степени представляют собой HTML, потому что в Wicket компоненты связываются с тегами HTML в шаблоне.Но во всех средах, основанных на пользовательских тегах, шаблоны обычно полны пользовательских тегов и не могут быть воспроизведены в браузере сами по себе.
Scala поддерживает встраивание произвольного XML непосредственно в исходный код программы.Вот функция Scala, которая создает ненумерованный список из коллекции:
def listify[T](items: Iterable[T], liBody: T => NodeSeq) = <ul>{
items.flatMap(i => <li>{liBody(i)}</li>)
}</ul>
Теперь, если у меня есть это, я уже отказался от архитектурной чистоты, потому что у меня есть теги ul и li в «контроллере», или«бизнес-логика» или «вспомогательный объект», или как вы его называете, а не в шаблоне.Тем не менее, это довольно четкий и простой способ создания списка.Чтобы сделать это любым другим способом, необходимо заменить некую встроенную инфраструктуру привязки тегов вместо собственных встроенных функций Scala.
Поэтому мне интересно, почему бы просто не пойти другим путем и избавиться от шаблонов?Если Scala полезен для создания ненумерованного списка, то почему он не может создать то, что содержит ненумерованный список?И вплоть до страницы обратно к тегу html.
Я задаю вопрос: учитывая язык, который уже включает мощную поддержку XML, есть существенные преимущества использования файлов шаблонов и их преобразования вфактический HTML во время выполнения, или лучше просто рассматривать файлы шаблонов как артефакты, перенесенные из языков без встроенной поддержки XML, и отказаться от них?