网络似乎充满了Velocity和FreeMarker之间的比较,它们似乎相当合理。但似乎几乎没有StringTemplate和FreeMarker之间的比较!
那么,StringTemplate和FreeMarker之间的主要区别是什么?
我对它们的用法是仅生成HTML页面。在这两者中,我会期望FreeMarker更合适,更有能力,因为这似乎更常见 - 但通过快速浏览一下,看起来StringTemplate实际上有更合适的功能!
如果使用过两者的人都有时间发表评论会很棒 - 对于实际细节,我可以并排阅读文档,但我想要开始使用。
答案 0 :(得分:33)
我设计ST在生成JSP的“模板中的代码”模型之后构建jGuru。速度和朋友(即我认为的每一个其他引擎)都会给你更多的力量。我基本上使用了四个功能来构建jGuru.com(如paper中所述)。更多功能是不必要的,并导致您将模型纠缠到模板中。如果您正在构建一次性原型,那没关系,任何引擎都可以。在这种情况下,模板中的代码是可以的,因为您不关心维护。
人们似乎忽略了另一件事:图形设计师如何在模板中读取代码?他们不能。那么,他们如何处理模板呢?即使改变某些元素的顺序也会破坏你的模型。你真的需要分离才能在商业环境中工作,除非你想要一个看起来像编码器的网站构建html;)
答案 1 :(得分:8)
主要区别在于StringTemplate严格执行模型 - 视图分离,你不能在模板中放置逻辑,而FreeMarker让你在模板中放入完整的逻辑。这至少在开始时使用起来更加困难但它更具可扩展性。例如,如果您正在生成代码并且模板中没有逻辑,那么为另一种语言生成另一个端口则不那么繁琐,因为您不必在每个模板中复制逻辑。
来自Terence Parr的a paper解释了模型 - 视图分离的好处