繁体   English   中英

Play Framework 2.0中的动态模板

[英]Dynamic templates in Play Framework 2.0

Play 1.0TemplateLoader用于在运行时生成模板。

Play 2.0有动态加载模板的解决方案吗? 或者我可以以某种方式将其转换为使用Eval scala代码?

例如:我想在数据库中存储一些模板,以便某些用户可以编辑它们。

Play 2.0已经将模板编译为对象方法,因此您不必“动态加载”它们!

考虑这个名为app/views/test.scala.html简单模板。

@(num:Long) 
Your number is @num

它成为一个名为testviews.html的Scala方法。 使用以下代码评估它:

val msg : String = views.html.test(23).toString()

您不必仅使用html视图。 要将模板与字符串一起使用,请使用play.api.templates.Txt派生类。 这是一个名为app/views/quick.scala.txt的模板:

@(id:Long)Your id is @id

它成为一个方法views.txt.quick并使用:

val msg2 : String = views.txt.quick(32).body

您可以在play.api.templates的文档中找到更多信息。

似乎相关代码位于Play-2.0目录下的framework/src/play/src/main/scala/system/ApplicationProvider.scala中,特别是ReloadableApplication类。 我不确定这种动态编译如何适合你,因为你不想在请求模板时这样做(它很慢)。 这意味着存储在数据库中并没有多大意义:您不希望存储模板源代码,而是存储已编译的模板对象。

为了论证,如果您只是将模板写入app/views目录,您可以让Play在闲暇时编译它们。 但是,请注意,因为它们可能无法在生产系统上编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM