StringTemplate和FreeMarker之间的主要区别是什么?

2022-09-01 09:46:47

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

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

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

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


答案 1

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

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


答案 2

主要区别在于 StringTemplate 严格强制执行模型视图分离,您无法将逻辑放在模板中,而 FreeMarker 允许您在模板中放置大量逻辑。这至少在开始时使它更难使用,但它更具可扩展性。例如,如果您正在生成代码,并且模板中没有逻辑,则为另一种语言生成另一个端口就不会那么繁琐,因为您不必在每个模板中复制逻辑。

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


推荐