我目前正在构建一个Spring MVC应用程序。我希望使用带有标记库的JSP页面来处理视图层和HTML的格式,但我遇到了我公司的另一个使用Velocity模板用于同一目的的组。
从我所看到的情况来看,在我看来两种方法之间有很多相似之处:
- 两者都有易于理解的语法。使非开发人员易于理解和使用,允许设计人员专注于HTML / CSS,只需在需要条件/动态内容的少数情况下使用指令/标记库,而无需完全了解Java的。
- 很容易看出内容的哪一部分是HTML vs哪些是指令/逻辑。
- 两者都被大量使用和良好支持。
- 很容易与Spring MVC集成。
但是在比较这两种技术时,我看不出使用一种技术与另一种技术的具体原因。我无法考虑任何特定于Velocity或JSTL的缺点。
所以我的问题是,您认为每种方法的优缺点是什么?如果您使用其中一个构建了一个(Spring)MVC应用程序,那么是什么让您决定使用的视图层技术以及您决定使用哪一个(如果有的话)?
更新:我发现了在Spring Framework论坛上存档的同一主题的类似讨论 这里对于任何在JSTL和Velocity之间作出同样决定的人来说,这可能是我感兴趣的。
我更喜欢使用Velocity,因为使用JSP + JSTL可以允许懒惰/草率的开发人员通过添加scriptlet来解决问题。应该没有理由在视图层中包含Java代码。理解Velocity并不需要太多,事实上我只是在大约两周内就把它拿起来了。虽然我不喜欢输出的格式,但在大多数情况下它的效果非常好。我们实际上并没有在应用程序的视图层中使用它,而是用于生成供其他浏览器使用的HTML。我们将Velocity的输出保存为文件,然后将其部署到不同的服务器以供其他Web客户端使用。
我实际上稍微喜欢Freemarker和Velocity,以防你开始探索其他选择。比较在这里:
http://freemarker.org/fmVsVel.html
我同意Ben关于通过避免JSP和scriptlet的可能性来强制执行简单视图的陈述。我也喜欢在任何类型的执行环境(JUnit,main()方法)中呈现Freemarker或Velocity模板的能力,而不需要JSP那样的Servlet / JSP容器。
我更喜欢使用Velocity,因为使用JSP + JSTL可以允许懒惰/草率的开发人员通过添加scriptlet来解决问题。应该没有理由在视图层中包含Java代码。理解Velocity并不需要太多,事实上我只是在大约两周内就把它拿起来了。虽然我不喜欢输出的格式,但在大多数情况下它的效果非常好。我们实际上并没有在应用程序的视图层中使用它,而是用于生成供其他浏览器使用的HTML。我们将Velocity的输出保存为文件,然后将其部署到不同的服务器以供其他Web客户端使用。
我实际上稍微喜欢Freemarker和Velocity,以防你开始探索其他选择。比较在这里:
http://freemarker.org/fmVsVel.html
我同意Ben关于通过避免JSP和scriptlet的可能性来强制执行简单视图的陈述。我也喜欢在任何类型的执行环境(JUnit,main()方法)中呈现Freemarker或Velocity模板的能力,而不需要JSP那样的Servlet / JSP容器。
JSP在视觉上区别于嵌入式HTML也更加困难。有了Velocity,这是非常明显的。
此外,VelocityTools包提供了大量附加功能。