Velocity与FreeMarker的比较

76

Velocity 还是 FreeMarker?

它们看起来非常相似,甚至语法也一样吗?

什么时候使用哪个呢?

5个回答

72
项目的目标是不同的。
Velocity旨在尽可能保持模板简单,有助于维护逻辑和表现之间的分离,以避免将代码粘贴到模板中。有时这是正确的选择。当然,有时直接将复杂逻辑连接到模板中可能更为合适。
Velocity并不经常进行更新,但这并不意味着它没有在积极开发。用户社区庞大,代码快速稳定,语法基本固定。在过去几年中,Freemarker在模板语法和API方面经历了许多变化。有时候最好还是让事情自然而然地发展。再次强调,这取决于你所寻找的东西。
Freemarker的文档要复杂得多 - 它是一款更为复杂的软件。
许多使用Freemarker的用例可以归结为希望拥有复杂的模板工作流程,同时又不想要编译步骤。近年来,我已经开始使用Python或Ruby替代Java,在这个问题上遇到的困难就少多了。

1
我完全同意这一点。当需要做出选择时,我通常会选择Velocity,因为Freemaker的功能是不必要的。 - Brett Ryan

47

当这个问题被提出的时候,Velocity并没有处于积极开发的状态。而Freemarker则一直在积极开发中,根据我的经验来看,Freemarker也更加灵活。


30
在Freemarker社区中,有一些人已经散布了关于Velocity不活跃的神话将近7年了。在这段时间里,Velocity已经发布了近十个版本(包括点版本和VelocityTools版本)。 - Nathan Bubna
11
尽管 Velocity在开发方面似乎失去了动力(我基于这个回复来做出这个判断),但某个东西的最后一个稳定版本发布日期并不总是衡量其价值的最佳标准。HTTP一直停留在2.0,而MIME也从未升级到1.0。尽管它们只是规范,而非软件,但我认为可能还有一些有价值的工具已经成熟。 - Jherico
9
Velocity 已经复活了。2017年8月发布了新的 2.0 稳定版 - Dherik
7
这个答案完全是错误的。 - Koshinae
5
Velocity Engine 2.1 发布(2019年3月31日星期日) Velocity Tools 3.0 发布(2018年10月9日星期二) - Ariel
3
他们于2020年2月2日发布了一个新版本:https://velocity.apache.org/news.html#engine22。应该删除这条评论。 - jfrohn

20

如果可以的话,使用Freemarker:

  • 像@skaffman所说,它仍在积极开发中
  • 文档好,我认为比Velocity更好
  • 在许多Web框架中提供作为备用模板语言
  • 比Velocity有更少的依赖
  • 比没有扩展的原始Velocity更完整。
  • 还可以看一下@leonm提供的链接。

19
如果一个模板系统在发展了十多年后仍然在积极进行开发,那么您可能需要寻找更加稳定的替代品。 - fijiaaron
9
"持续开发"其实并不是一件好事。 - Jay
和大家都在变化。 :) - Rudy
10
我是FreeMarker当前的维护者(顺便说一下,我不是原作者)。在2.3.0版本之前(2004年中期之前),那是一个混乱的黑暗时期。从2004年中期开始(2.3.0版本),发布的版本都向后兼容。到2016年,FreeMarker已经更新到了2.3.23版本。一些新功能被添加以废弃旧功能,特别是在最近几年里。然而,经过这么多年,事情涌现出来,期望也发生了变化,最初的拦截并不完美。直到现在,在2.3.0版本12年之后,才考虑推出新一代的FreeMarker(在一个不同的包中)。如果你在12年后还没有变得更聪明,你懂的... - ddekany

7
他们试图不断区别自己,例如(例子)。
我已经广泛地使用过这两种模板语言,从我的角度来看它们非常相似。有许多特性可以构建进模板语言中,其余的只是些花哨的东西。

1
有些已經過時了(參見:此列表最初是基於與Velocity 1.2的比較),因為Velocity已經發展到1.6。就性能而言,我沒有看到有效的測試來確定哪一個表現更好。 - adrian.tarau
1
考虑到该列表基于一个接近十年前的Velocity版本,Freemarker社区没有更新它是一种耻辱。现在Velocity已经更新到1.7版本,而该列表中的大部分内容都是错误的。 - Nathan Bubna

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接