为什么人们使用Velocity和/或NVelocity?

时间:2009-02-02 17:05:14

标签: java .net asp.net-mvc templates theory

在过去的一年里,我听到很多关于Velocity和NVelocity的消息。阅读他们的文档并在网上搜索并没有给我我想要的答案。

在什么情况下我会在开发中使用这个库?它解决了哪些问题尚未解决?

6 个答案:

答案 0 :(得分:8)

自Web应用程序诞生以来,人们开始考虑在许多应用程序中分离关注点,包括Web应用程序。挑战在于将视图代码与业务代码或逻辑代码分开。当jsps第一次到达时,许多人直接在jsps中编写大量逻辑(比如db访问等),打破了分离关注点的基本原则(jsps应该负责演示,而不是逻辑)。

Velocity,Freemarker和其他模板引擎可以分离UI逻辑和业务逻辑,从而促进演示中的更改,同时最大限度地减少业务方面的变化。这些模板引擎具有执行常见UI任务的功能,例如,如果某些条件成立,则显示html块,或者在列表上迭代,同时在视图外部维护逻辑代码。这对于长期维护复杂的应用程序至关重要。

答案 1 :(得分:4)

我认为重要的是要指出,与作为模板机制的JSP / ASP.NET相比,Velocity / NVelocity确实“ENFORCE”关注的分离。

使用<%..%>在JSP / ASP.NET中,允许使用任何Java / .NET代码。这就是为什么有时你会看到这些文件中的业务逻辑代码。

使用Velocity / NVelocity,您无法嵌入很长的代码系列。相反,你真的被迫传递计算值,Velocity / NVelocity选择并根据模板的设计方式显示它们。

另一点是他们可以在Web容器环境之外工作(至少Velocity可以AFAIK)。想象一下,您已经使用JSP / ASP.NET设计了一个报告模板。它在网上运行良好。然后突然有一个更改请求要从桌面应用程序完成。您可以初始化Velocity / NVelocity,计算值,然后渲染模板,而不是在其中嵌入Web容器。

答案 2 :(得分:3)

这是一个模板引擎。如果您有大量混合了可变内容的静态文本,那么模板是减少您必须完成的工作量的好方法。 它比String.Format或连接负载要好得多,因为它不像重复或容易出错,并且更易于维护,因为你可以通过查看它来确切地弄清楚模板的作用。

答案 3 :(得分:0)

我们使用模板生成生产,UAT,系统测试,应急系统等的配置文件。

我们有一个主Spring配置文件,我们在其中注入一个属性文件。我们有一个由Velocity解析的主属性文件,这允许我们将所有系统设置保存在一个文件中。

答案 4 :(得分:0)

作为奖励,对于感兴趣的人,我建议阅读以下内容:

这些是关于StringTemplate的链接,这是一个由Terence Parr编写的模板引擎,他编写了一个在任何地方都使用过的解析器(例如:hibernate使用了antlr)。

答案 5 :(得分:0)

1 - Velocity引擎实际上将实时数据与保存静态信息的xyz.vm文件合并 2 - vm文件使用速度模板语言(VTL) (它可以遍历放置在上下文中的java可迭代java对象,可以调用放置在上下文中的对象可访问的方法)

使用Velocity的情况 - 将java的强大功能带到html ,而不仅仅是html
1 - 当你必须经常生成具有不同数据和恒定风格的报告邮件时(foreach支持)
2 - 当您想要将实时数据与虚拟场所持有者合并在深层嵌套内容中时 3 - 当你想根据数据的价值(如果支持的话)决定风格信息时,还有更多
请参阅 - http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html