模板引擎的建议

时间:2010-04-10 12:46:29

标签: java templates

我正在寻找模板引擎。要求:

  • 在JVM上运行。 Java很好; Jython,JRuby等也是......
  • 可以在servlet之外使用(与JSP不同)
  • 灵活多变。存储模板的位置(JSP和许多人要求模板存储在FS中)。它应该提供一个模板加载接口,可以实现或类似的
  • 容易包含参数化模板 - 我非常喜欢JSP的标签片段
  • 好的文档,漂亮的代码等,通常的嫌疑人

我看过JSP-它几乎完美,除了servlet和文件系统耦合,Stringtemplate-我喜欢模板语法,但它在文件系统耦合上失败,文档缺乏,模板组和东西令人困惑,GXP ,TAL等。

想法,想法?

7 个答案:

答案 0 :(得分:2)

Velocity怎么样?

  • 完整的Java
  • 不需要servlet
  • 它有文件,jar,classpath& URL资源加载器(可能还有更多)
  • 模板可以包含其他模板(如果这是你的意思)
  • 有很好的教程,到目前为止我可以从文档
  • 得到我需要的东西

答案 1 :(得分:2)

如果我的记忆服务,FreeMaker是体面的 - 假设是某种“速度,下一代”。

答案 2 :(得分:0)

可以查看“JSTP”,http://jstp.sourceforge.net/manual.html

它的语法是JSP的子集,因此IDE支持非常好。

“jstp”模板在构建时被翻译成普通的java类。没有运行时依赖。

模板的“参数”应该由成员字段传递。静态打字。

Bar.jstp

<%!                                        
    public String name;                    
%>

Hello <%= name %> 

build将其转换为Bar.java

public class Bar                                        
{                                                       
    public String name;                                 
    public void render(java.io.PrintWriter out)         
    {                                                   
        out.print("Hello ");                            
        out.print(String.valueOf(name));                
        ...                                             
    }                                                   
}  

然后通过

调用模板
Bar bar = new Bar();                              
bar.name = "John";                               
bar.render(..);       

使用典型的“hotswap”,您不必在编辑模板时重新启动服务。

答案 3 :(得分:0)

Snippetory怎么样?

  • 这是完整的java,(甚至你的逻辑用java编写!)
  • 模板由UriResolver加载,包含calsspath,文件系统和URL的实现。
  • 它可以在Servlet外部使用,例如像String.format这样的临时模板。
  • 它完全基于参数化的模板包含。
  • 文档还可以,它比基于脚本的引擎简单得多,所以你真的不需要那么多。
  • 即将推出great new freatures的新版本,我想

答案 4 :(得分:0)

尝试使用Mixer2。 http://mixer2.org/ Mixer2对servlet-API没有依赖性。 您可以将模板存储在String,java.io.File和java.io.InputStream。

答案 5 :(得分:0)

Chunk,我的Java非严肃的模板引擎,将是一个不错的选择。

  • 轻。
  • 包含示例和食谱的精彩文档:http://www.x5software.com/chunk
  • 独立 - 无需servlet。
  • 来自文件系统,类路径,字符串,webserver, or write your own template provider
  • 的模板
  • 基于{$ tags}的简单模板。
  • 模板可以包含其他模板,甚至可以使用json格式的标记值字典将其作为宏执行。
  • 循环,条件,过滤器,所有典型的好东西。

答案 6 :(得分:0)

Pebble的作者非常符合你的标准。