我正在寻找在运行时之前编译模板文件的Web模板引擎(任何语言,Java首选)。它应该在我的模板中检测未知的属性名称和路由。例如:
<h1>{{hello}}</h1>
如果我渲染的模型上没有相应的字段,应该给出编译错误。
答案 0 :(得分:4)
我已实施static-mustache library以提供基于胡须语法的类型安全模板引擎,就像你问题中的那样。
它在编译时检查语法错误和类型错误(如缺少属性)。它需要零构建配置,因为它是标准的注释处理器。
模板仍然是纯胡子模板,所有类型信息都是从用于渲染的普通Java类中提取的。
答案 1 :(得分:3)
我建议你看看Rythm template engine。 Rythm是Java的静态类型模板引擎。您需要使用@args
指令声明所有模板参数。结果是你得到一个具有清晰界面的类型安全模板。
您可以在http://fiddle.rythmengine.org/
玩Rythm的在线互动小提琴网站声明:我是Rythm模板引擎的作者
更新以回答@ user2043423对属性检查的担忧
所以首先将每个rythm模板编译成java类,因此它绝对是类型安全的。第二,因为它是类型安全的,它会检查Java类中是否存在属性。例如,您将rythm模板定义为:
@args Employee employee
Hello @employee.getFistName()
运行模板时会出现编译错误,因为@employee.getFistName()
中存在拼写错误,一旦将其修改为@employee.getFirstName()
,则会继续渲染模板
如果您想检查模板参数员工是否已传递给模板,请使用@if
:
@args Employee employee
@ifNot(employee) {
@return
}
Hello @employee.getFirstName()!
有关@if
指令