【问题标题】:Velocity vs. FreeMarker [closed]速度与 FreeMarker [关闭]
【发布时间】:2010-11-30 08:58:00
【问题描述】:

Velocity 还是 FreeMarker?

它们看起来几乎一样,甚至语法?

用什么?或者什么时候用什么?

【问题讨论】:

    标签: java velocity template-engine freemarker


    【解决方案1】:

    他们不时尝试让自己与众不同 (example)。

    我与这两者进行了广泛的合作,从我的角度来看,它们非常相似。您可以在模板语言中构建的功能非常多,其余的只是无用的。

    【讨论】:

    • 其中一些现在已经过时(参见:此列表最初基于与 Velocity 1.2 的比较),因为 Velocity 达到了 1.6。在性能方面,我没有看到一个有效的测试来确定哪个性能更好。
    • 考虑到该列表基于近十年前的 Velocity 版本,freemarker 社区没有更新它是一种耻辱。速度现在为 1.7,而且该列表中的大部分内容都是错误的。
    【解决方案2】:

    有两本关于 Velocity 的已出版书籍:

    以及其他有关于它的章节的书籍。 所以,FreeMarker 拥有更多或更好的文档就这么多了:)。

    【讨论】:

      【解决方案3】:

      项目的目标不同。

      Velocity 的目标是使模板尽可能简单,以帮助保持逻辑和表示之间的分离,这样您就不会滑下在模板中粘贴代码的滑坡。有时这是正确的。当然,有时能够将复杂的逻辑直接连接到模板中是正确的。

      Velocity 不会经常更新,但这并不意味着它没有处于积极开发中。用户社区大,代码快速稳定,语法基本固定。在过去的几年里,Freemarker 在模板语法和 api 方面经历了翻天覆地的变化。有时候,一个人待得很好。同样,这取决于您要查找的内容。

      Freemarker 的文档要广泛得多,而且它是一个复杂得多的软件。

      Freemarker 的许多用例归结为想要一个复杂的模板工作流程而不想要一个编译步骤。近年来,我一直在使用 Python 或 Ruby,而不是用 Java 来解决这个问题。

      【讨论】:

      • 我完全同意这一点。当出现选择时,我通常会选择 Velocity,因为 Freemaker 的功能是不必要的。
      【解决方案4】:

      Velocity 不再真正处于积极开发中。 Freemarker 是。

      根据我的经验,Freemarker 也更加灵活。

      【讨论】:

      • Freemarker 社区中的某些人传播 Velocity 不活跃的神话已经将近 7 年了。在那段时间里,Velocity 已经发布了十几个版本(包括点版本和 VelocityTools 版本)。
      • 虽然看起来 Velocity 似乎在开发方面失去了动力(我将根据这个响应使用 FTL),但某些东西的最后稳定发布日期并不总是最好的衡量它的价值。 HTTP 从未离开 2.0,MIME 从未离开 1.0。当然,这些是规范,而不是软件,但我认为可能有一些有价值的工具已经变得成熟了。
      • Velocity 又活了。新的version 2.0 stable 于 2017 年 8 月发布。
      • 这个答案是完全错误的。
      • velocity.apache.org/news.html#engine21 Velocity Engine 2.1 发布(2019 年 3 月 31 日,星期日) Velocity Tools 3.0 发布(2018 年 10 月 9 日,星期二)
      【解决方案5】:

      如果可以,请使用 Freemarker:

      • 正如@skaffman 所说,仍在积极开发中
      • 良好的文档,比 Velocity 恕我直言更好
      • 在许多 Web 框架中作为替代模板语言提供
      • 比 Velocity 的依赖更少
      • 比没有扩展的原始 Velocity 更完整。
      • 另请参阅@leonm 提供的链接

      【讨论】:

      • 如果模板系统在 10 多年后仍在积极开发中,您可能需要寻找更稳定的东西。
      • 事物不断“发展”这一事实确实不是一件好事。
      • 每个人都在改变。 :)
      • 我是 FreeMarker 的当前维护者(顺便说一句,我不是原作者)。在 2.3.0(2004 年中)之前,这是黑暗时代,混乱。自 2004 年中期 (2.3.0) 以来,这些版本向后兼容,2016 年 FreeMarker 为 2.3.23。添加了一些新功能,弃用了旧功能,特别是在过去几年,但经过这么多年,事情发生了,期望发生了变化,最初的拦截远非完美。直到现在,在 2.3.0 之后的 12 年之后,才考虑新一代 FreeMarker(在不同的包中)。如果你在 12 年后没有变得更聪明,你知道......
      猜你喜欢
      • 2011-07-30
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      相关资源
      最近更新 更多