2010-11-09 76 views
22

我试图在Freemarker和Velocity之间做出决定,将其用作模板引擎,您可以看到每个优点和缺点?Freemarker vs. Velocity

任何替代品,我应该看看吗?

+3

有人问,但这个人得到了更好的答案。 – Speck 2012-02-27 15:04:46

回答

35

Velocity和Freemarker都很有能力。不要为选择而痛苦。他们在设计背后有着相当不同的优先级,所以一旦超越了基本模板,他们的功能集很难进行比较。 Velocity的语法更简单,更明确,Freemarker的重语法允许它们支持JSP库。 Velocity通过附加项目(如VelocityTools)提供了更多的自由度和更多的功能。 Freemarker提供了更好的本地空白处理,最近的Velocity版本提供了更有趣的内容控制(#define,#evaluate,#[[literal block]]#)。

至于性能方面,Velocity近年来取得了很大的收益,除了最初的模板解析。但对于性能至关重要的任何理智的应用程序,您应该将这两个引擎设置为缓存模板并仅解析一次,从而减少了这个问题。一般来说,你会发现你使用任何一个引擎的表现都更依赖于模板的性质,而不是引擎之间的差异。

StringTemplate也很受欢迎,虽然它们是MVC纳粹,并且无法匹配Velocity或Freemarker的功能。;)您的潜在失望程度比任何一种更受欢迎的模板引擎都要高一些,而这两种模板引擎都不会令人失望。抓住一个,然后去。

+0

**“不要为选择而痛苦”**写得很好! – Stephan 2018-01-09 11:38:58

8

我更喜欢FreeMarker。我喜欢这些文档,我总能找到我需要的东西。总的来说,我只是觉得它非常强大。

String Template是另一种选择。

+2

同样,这个比较已经过时了,只比较了基本特性,忽略了Velocity的各种强大的附加项目。 Freemarker社区没有相信他们没有更新它。 – 2010-11-10 15:37:19

+0

@Nathan Bubna - 我在某个时候并没有真正使用过速度,那个比较中究竟是什么过时了? – Andy 2010-11-10 15:55:38

+0

大部分,我可以在这里指出。它基于Velocity 1.2,就像9年前一样。速度1.7正在测试中,并很快成为决赛。它似乎也意味着像VelocityTools这样的东西是“解决方法”,这不是一个公平的评估。 – 2010-11-11 18:02:52

2

freemarker项目页面上有一个lengthy comparison

从来没有与速度工作,我不能有意义地比较这两个,但我对freemarker非常满意,我看到没有理由超越它。

+1

那么长时间的比较对于Velocity 1.4来说可能是有效的,但是Velocity自那以后增加了很多。而且这种比较总是拒绝承认流行的VelocityTools项目的存在,该项目一直提供了丰富的功能。 – 2010-11-10 15:16:17

+1

更正,该比较对速度1.2有效。 Velocity现在支持其中大部分(尽管有时以不同方式实现),其余大部分由VelocityTools支持。而一些“比较”则很奇怪。当我们轻松支持java函数时,Velocity不需要与Java无关的函数。 – 2010-11-11 18:10:30

+0

“冗长的比较”的链接已经失效 – domih 2015-12-09 09:13:42

5

它看起来像this是比较体面的破损。虽然,这是几岁。

从文章:

总之

双方的FreeMarker和Velocity是非常 能够模板引擎。速度 似乎享有较大的用户群, 可能是由于它是 部分Apache项目。正如我在本文中显示的 ,虽然, FreeMarker是更复杂的 和更快的两个。在基本的 操作中,两个模板引擎都是 几乎相似,提供了一个易于理解的API。

Velocity和FreeMarker都是 很容易集成到 应用程序中,并在小模板上提供良好的性能 。在解析较大的模板时速度减慢 ,当您为 项目选择模板引擎时,您可能会考虑到 。

0

Freemarker无法在Android上运行。因此,我目前正在将我的项目转换为Velocity,以使其与移动设备兼容。