问题 在MVC应用程序中使用JSTL vs Velocity进行视图层的好处?


我目前正在构建一个Spring MVC应用程序。我希望使用带有标记库的JSP页面来处理视图层和HTML的格式,但我遇到了我公司的另一个使用Velocity模板用于同一目的的组。

从我所看到的情况来看,在我看来两种方法之间有很多相似之处:

  1. 两者都有易于理解的语法。使非开发人员易于理解和使用,允许设计人员专注于HTML / CSS,只需在需要条件/动态内容的少数情况下使用指令/标记库,而无需完全了解Java的。
  2. 很容易看出内容的哪一部分是HTML vs哪些是指令/逻辑。
  3. 两者都被大量使用和良好支持。
  4. 很容易与Spring MVC集成。

但是在比较这两种技术时,我看不出使用一种技术与另一种技术的具体原因。我无法考虑任何特定于Velocity或JSTL的缺点。

所以我的问题是,您认为每种方法的优缺点是什么?如果您使用其中一个构建了一个(Spring)MVC应用程序,那么是什么让您决定使用的视图层技术以及您决定使用哪一个(如果有的话)?

更新:我发现了在Spring Framework论坛上存档的同一主题的类似讨论 这里对于任何在JSTL和Velocity之间作出同样决定​​的人来说,这可能是我感兴趣的。


891
2017-12-19 15:56


起源



答案:


我更喜欢使用Velocity,因为使用JSP + JSTL可以允许懒惰/草率的开发人员通过添加scriptlet来解决问题。应该没有理由在视图层中包含Java代码。理解Velocity并不需要太多,事实上我只是在大约两周内就把它拿起来了。虽然我不喜欢输出的格式,但在大多数情况下它的效果非常好。我们实际上并没有在应用程序的视图层中使用它,而是用于生成供其他浏览器使用的HTML。我们将Velocity的输出保存为文件,然后将其部署到不同的服务器以供其他Web客户端使用。


8
2017-12-19 20:00





我实际上稍微喜欢Freemarker和Velocity,以防你开始探索其他选择。比较在这里:

http://freemarker.org/fmVsVel.html

我同意Ben关于通过避免JSP和scriptlet的可能性来强制执行简单视图的陈述。我也喜欢在任何类型的执行环境(JUnit,main()方法)中呈现Freemarker或Velocity模板的能力,而不需要JSP那样的Servlet / JSP容器。


6
2018-01-01 06:15



对我来说,自由制造者是他们的老板....我尝试了几次,这是非常了不起的,并不是很难在短时间内获得它。 - engma


答案:


我更喜欢使用Velocity,因为使用JSP + JSTL可以允许懒惰/草率的开发人员通过添加scriptlet来解决问题。应该没有理由在视图层中包含Java代码。理解Velocity并不需要太多,事实上我只是在大约两周内就把它拿起来了。虽然我不喜欢输出的格式,但在大多数情况下它的效果非常好。我们实际上并没有在应用程序的视图层中使用它,而是用于生成供其他浏览器使用的HTML。我们将Velocity的输出保存为文件,然后将其部署到不同的服务器以供其他Web客户端使用。


8
2017-12-19 20:00





我实际上稍微喜欢Freemarker和Velocity,以防你开始探索其他选择。比较在这里:

http://freemarker.org/fmVsVel.html

我同意Ben关于通过避免JSP和scriptlet的可能性来强制执行简单视图的陈述。我也喜欢在任何类型的执行环境(JUnit,main()方法)中呈现Freemarker或Velocity模板的能力,而不需要JSP那样的Servlet / JSP容器。


6
2018-01-01 06:15



对我来说,自由制造者是他们的老板....我尝试了几次,这是非常了不起的,并不是很难在短时间内获得它。 - engma


JSP在视觉上区别于嵌入式HTML也更加困难。有了Velocity,这是非常明显的。

此外,VelocityTools包提供了大量附加功能。


2
2018-02-02 22:46