Интеграция Scalate в Play 2.0

Особенность платформы Play 2.0, которую я ценю, — это статически скомпилированные представления. Если контроллер отображает представление без предоставления правильного количества правильно типизированных аргументов, выдается ошибка компиляции. Это значительно повышает удобство сопровождения, поскольку несоответствия между контроллером и представлением не нужно проверять при запуске приложения, а вместо этого они появляются во время компиляции.

Однако в стандартных шаблонах представлений Play 2.0 в качестве языка используется простой HTML в сочетании со Scala. Я хочу использовать Scalate, чтобы комбинировать Scala с гораздо менее многословными языками шаблонов Scaml или Jade. Но я не хочу использовать Scalate для компиляции моих представлений во время выполнения, потому что я потеряю преимущество статически скомпилированных представлений, о которых я упоминал выше.

Поэтому я попытался реализовать статическую компиляцию своих представлений Jade с помощью xsbt-scalate-generator, как описано в другом месте. Однако это дает мне только полпути — плагин при правильной настройке может создавать соответствующие файлы .class, но он называет и упаковывает их иначе, чем обычные представления Play 2.0. Представление Play 2.0 по умолчанию с именем index.scala.html компилируется в файл index.class в пакете views.html. Однако представление Jade с именем index.jade создает файл $_scalate_$default_jade.class в пакете по умолчанию (пустом). Этот класс нельзя импортировать и использовать в контроллере Java Play 2.0.

Как я могу сгенерировать файлы классов моих представлений Scalate таким образом, чтобы я мог просто написать return ok(views.html.index.render(args)); в своих контроллерах?

(Похоже, что сгенерированные классы предоставляют метод с именем по крайней мере render())


person DCKing    schedule 02.09.2012    source источник


Ответы (1)


Я начал плагин, чтобы сделать именно это. Оцените мою работу на: https://github.com/kryptt/play2-scalate-plugin

person Rodolfo Hansen    schedule 08.05.2013