【问题标题】:Advantages Rythm Template Engine over Japid for Play Framework 1.x?节奏模板引擎优于 Japid for Play Framework 1.x 的优势?
【发布时间】:2012-06-10 08:24:24
【问题描述】:
【问题讨论】:
标签:
java
playframework
template-engine
rythm
japid
【解决方案1】:
Rythm 语法接近 Play2 模板语法,因此迁移路径会更容易。
Ryhtm 所基于的 Razor 语法是为 C# 模板定义的,并且清晰一致。
另一方面,Japid 比 Rythm 更老,因此可以有更多的功能和更少的错误
【解决方案2】:
Japid 相对于 Rythm 的最大优势是前者有一个 Eclipse 插件,而后者目前没有工具支持。
Rythm 在提供更好的 Play-1.x 集成方面胜出。见Integration Guide和Migration Guide
这里值得一提的是 Rythm by default escape expression output 类似于 Groovy 引擎,而 Japid 要求您将其显式转义为 ${escape(expr)}。也就是说,Rythm 使用起来更安全,而 Japid 对性能的投票更多。
根据我的理解,两者的功能集应该没有其他大的差异。 - Green,Rythm 的作者
更新
Rythm 刚刚发布了一个名为 String Interpolation Mode (SIM) 的功能,它允许您在简单情况下省略参数声明,使其成为大多数情况下 String.format 的良好替代品:
String result = Rythm.render("Hello @who!", "world");
注意 SIM 以两种方式击败 String.format:
- 性能。
Rythm.render 比 String.formant 快 2 到 3 倍
- 清除。 “Hello @who”比“Hello %s”更清晰。
-
String.format() 只能按位置传递参数,而Rythm.render 既支持按位置传递,也支持按名称传递
【解决方案3】:
我已经实现了static-mustache library 以提供基于 mustache 语法的类型安全模板引擎。
它在编译时检查语法错误和类型错误(如缺少属性),如 Rythm 或 Japid。
它需要几乎零构建配置(与需要自定义插件的 Rytm 和 Japod 相比),因为它是标准注释处理器。
在 static-mustache 中,所有类型信息都是从用于渲染的普通 Java 类中提取的。模板语言仍然是纯粹的“无逻辑”胡子。
因此模板可以在服务器端和客户端渲染器之间共享。