1

我最近在我们的项目中遇到了 Freemarker 来生成页面。令我非常惊讶的一件事是,实际上 Freemarker 支持函数作为一等对象,也就是说,您可以将它们用作传递给模板中其他函数的参数。

问题是 - 例如,它在 HTML 页面生成中的实际用途是什么。在过去,我用 Common Lisp、Scheme 和 Haskell 编写了很多程序,但我不知道这对于实际的 Web 应用程序是如何工作的。在我们的项目中没有这种用法的例子。

谁能指出如何将 Freemarker 用于 Web 应用程序(我的意思是它是功能部分,当然,不是模板部分)?

UPD。我知道 Javascript 经常使用它,但这里不是这种情况——我说的是用于 HTML 生成的模板。

4

1 回答 1

0

我希望我能正确理解您的问题,但基本上您可以在 FreeMarker 模板中使用高阶函数来创建将其他宏作为参数的宏,并使用此构造来包装“内部”项目(比如说列表项目)具有外部 HTML 结构。

当然,这可以通过简单地将包装器 HTML 放在 <#list> 循环之前来完成,但是考虑到您对在前端呈现的许多类型的组件使用特定包装器 HTML 的情况,如果您想更改该全局中的某些内容包装标记,您必须在任何地方一个接一个地更改它,如果您使用执行此操作的高阶宏,您只需在一个地方更改包装标记。

这是我能想到的高阶 FreeMarker 函数的一个例子。关于它是否有任何实际用途的问题:我不完全确定 =)...在我看来,为了可维护性,它使模板代码过于复杂和不可读...如果其中一个是目标一个特定的项目,每个人都必须根据具体情况做出决定,但我确信在一种或另一种情况下做这样的事情是有意义的(就像上面例子中提到的那样)

于 2015-08-11T22:21:48.880 回答