31

网络上似乎充满了 Velocity 和 FreeMarker 之间的比较,而且它们似乎相当等价。但是 StringTemplate 和 FreeMarker 之间似乎几乎没有可比性!

那么,StringTemplate 和 FreeMarker 的主要区别是什么?

我对它们的用途是只生成 HTML 页面。在这两者中,我希望 FreeMarker 更合适,更强大,因为这似乎是更常见的 - 但通过快速浏览,似乎 StringTemplate 实际上具有更合适的功能!

如果同时使用过两者的人有时间发表评论,那就太好了 - 对于实际的细节,我可以并排阅读文档,但我想要一些开始的东西。

4

2 回答 2

39

在厌倦了 JSP 的“模板中的代码”模型之后,我设计了 ST 来构建 jGuru。速度和朋友(即,我认为的所有其他引擎)为您提供比您需要的更多的动力。我基本上使用了四个特性来构建 jGuru.com(如论文中所述)。更多功能是不必要的,并且会导致您将模型纠缠到模板中。如果您正在构建一次性原型,那没关系,任何引擎都可以。在这种情况下,模板中的代码是可以的,因为您不关心维护。

人们似乎忽略了另一件事:图形设计师如何阅读模板中的代码?他们不能。那么,他们如何在模板上工作呢?即使更改某些元素的顺序也会破坏您的模型。您确实需要分离才能在商业环境中工作,除非您想要一个看起来像编码器构建 html 的网站;)

于 2010-12-05T17:47:23.350 回答
8

主要区别在于 StringTemplate 严格执行模型视图分离,您不能将逻辑放入模板中,而 FreeMarker 允许您将完整的逻辑放入模板中。这至少在开始时使它更难使用,但它更多可扩展的。例如,如果您正在生成代码并且模板中没有逻辑,则为另一种语言生成另一个端口就不那么乏味了,因为您不必在每个模板中复制逻辑。

Terence Parr的一篇论文解释了模型视图分离的好处

于 2010-12-01T16:28:15.627 回答