2011-09-22 76 views
29

我处于一个小型的单页Web应用程序的“技术选择”阶段,它将大量使用AJAX,并将报告给Java后端。Spring MVC和UI组件

在我之前几个星期发布的问题中,SO社区普遍强烈地感觉到,使用基于Spring MVC的Web应用程序比使用JSF更好。由于春季是要求为导向,JSF是面向组件,它只会是有意义的使用Spring对于将要得到很多异步请求的东西。

如果我去JSF的路线,然后我的下一组的决定,将是否要使用所谓的UI组件库视图技术,如PrimeFacesIceFacesMyFaces

所以,我想知道: Spring MVC是否有类似于PrimeFaces(或它的喜欢)为我的页面创建视图组件?我知道它不是基于组件的,但我不是那么熟悉Spring MVC的Web平台,想知道什么是一些事实上标准(如有)或典型的技术堆栈的是,Spring Web开发人员用于构建好的网页。

而且,如果Spring只使用run-o-mill-model模板引擎,那么Freemarker就足够了吗?

我想这是一个萌芽的Spring Web开发人员的“最佳实践”类型的问题。

在此先感谢!

回答

19

通常,所谓UI组件的价值在于它们如何通过与有状态框架集成来跟踪服务器端的用户交互。

由于您已决定采用面向请求的框架,因此改用一些众所周知的客户端JavaScript库会更有意义。热门的选择包括:

就个人而言,如果我不需要很多标准的预构件,我喜欢Backbone.js + underscore.js + jQuery。我不喜欢Google Web Toolkit,因为它感觉像写了一个pidgin JavaScript,并且在那一点上我更喜欢直接编写JavaScript。

+0

太棒了!谢谢@卢多! – IAmYourFaja

+0

骨干链路中断 – Snickers3192

6

是,JSF是面向组件和Spring MVC是请求定向。 我建议你看看Thymeleaf模板引擎,这是JSP引擎的完全替代 .... Thymeleaf特点是:

  • 它允许自然模板。
  • HTML5的支持
  • 更高的通过从卢多维科·菲舍尔提到的东西在内存缓存利用

Click here for more

0

此外除了性能,如果我们考虑同样的问题在现在是一个天科技世界比你可以使用最近世界最权力的东西之一:Angular。有2个示例场景。

  1. 如果你的架构是完整的客户端:整合是非常自然的。 Spring MVC将您的服务作为REST(JSON/XMl ...)公开,您的客户端应用程序使用Angular JS使用您的JSON。在这里,战争应用程序(Spring mvc)必须部署在Servlet容器(Tomcat)中,而您的客户端应用程序可以部署在同一台服务器上或另一台服务器Nginx,Apache等中。
  2. 如果要保留页面在服务器端生成,只能使用AngularJS进行一些很好的DOM操作,所以你的代码必须部署在同一场战争(WEB-INF)中。混合这两种方法并不总是一个好主意。你可以尝试thymeleaf留在服务器端生成页面。

    因此,通过这种方式,您可以同时拥有像模板,可测试性和清晰视图代码这样的角度很酷的特性。