【问题标题】:Template engine recommendations [closed]模板引擎建议 [关闭]
【发布时间】:2010-04-10 12:46:28
【问题描述】:

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

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

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

想法,想法?

【问题讨论】:

标签: java templates


【解决方案1】:

Velocity怎么样?

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

【讨论】:

    【解决方案2】:

    如果我没记错的话,FreeMaker 是不错的 - 假设是某种“速度,下一代”。

    【讨论】:

      【解决方案3】:

      也许看看“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(..);       
      

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

      【讨论】:

        【解决方案4】:

        Snippetory 呢?

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

        【讨论】:

          【解决方案5】:

          试试 Mixer2。 http://mixer2.org/ Mixer2 不依赖于 servlet-API。 您可以将模板存储在 String、java.io.File 和 java.io.InputStream 上。

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

              我是Pebble 的作者,它非常符合您的标准。

              【讨论】:

              • 我建议详细说明为什么这个库会为用户工作,目前这基本上是一个仅链接的答案,被认为是低质量的。
              猜你喜欢
              • 2010-12-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-12-19
              • 1970-01-01
              • 1970-01-01
              • 2011-05-07
              • 1970-01-01
              相关资源
              最近更新 更多