在Thymeleaf和Angular之间选择一个新的Spring MVC项目

时间:2017-06-01 07:36:40

标签: java spring angular spring-boot thymeleaf

我正在开始一个新的Spring Boot Web应用程序,我需要选择如何实现前端。

我对我在几个项目中使用的Thymeleaf模板框架感到很满意,但我正在评估Angular (v2)作为替代方案。

我对客户端MVC框架很陌生,我想了解是否有一些指导方针可以决定哪个选项最适合网络项目。

我已经阅读了很多关于此的帖子和教程,但它们似乎都描述了个人观点或只是编码实验......

  1. 是否存在客观建议使用客户端方法而非服务器端实现的一些应用程序要求?

  2. 同时使用这两种技术是否可行且有效?

2 个答案:

答案 0 :(得分:35)

Thymeleaf和AngularJS并不相互排斥。您当然可以一起使用它们,具体取决于您要完成的任务。如果您正在编写单页动态Web应用程序,那么Thymeleaf可能是不必要的。

关于客户端框架与服务器端框架的问题,我是一名企业软件工程师,因此我不是在创建商业软件,而是我的优先级不是关于它看起来多么漂亮(一点Bootstrap确实如此)诀窍)以及更多关于稳定性,浏览器兼容性(即使是旧浏览器)和可维护性。我个人避免单页,动态Web应用程序,因为我发现代码库在非平凡的应用程序中更难管理;在我看来,一个庞大的Javascript代码库可能是一个熊。主要在服务器端构建我的页面为我提供了更好的调试功能(Java将为您提供大量编译时帮助,您不会使用Javascript)和更轻松的日志记录。我在客户端使用javascript(主要是jquery),但一般来说,如果用户关闭javascript,我的网页应用程序会优雅地降级。同样,这些是支持业务的内部,实用的应用程序。我没有时间撰写关于这个主题的整篇论文,并且我有很多细微差别没有涵盖,但希望这很有用。

如果您需要您的网络应用程序更像移动或桌面应用程序,那么使用AngularJS等框架的单页动态网络应用程序是一种方法。

答案 1 :(得分:13)

选择不是使用一个JavaScript库还是Thymeleaf,这将是您创建的人为约束,它们都是不同的动物。 Thymeleaf用于模板化,JQuery是用于制作动态页面的客户端库。选择模板库或在JavaScript库之间进行选择会更有意义,但两者可以很好地结合在一起。

一般来说,你的模板不应该影响你的JavaScript代码,有些人会模板化他们的Javascript代码,但恕我直言这是一个可怕的想法。而是使用Templating来替换HTML中的标记属性,使用Javascript来使用您选择的任何库来使您的网站动态化。

我不确定你的意思

  

客户端认可而不是服务器端实现

但我现在看到的是两种不同的方法,创建Microservies VS Monolith Web应用程序。如果您完全在Thymeleaf开发您的网站,您将无法使其重复使用。 Netflix,亚马逊,优步等都创建了服务(有时称为微服务),这些服务通过REST API在整个组织中重用。

如果您只在Thymeleaf中实现了一个网站,则其他应用程序(想想移动设备)将无法访问您的应用程序创建的任何服务,而如果您为应用程序创建REST API,则可以继续重用您的服务器当您需要制作移动应用程序或具有类似要求的其他Web应用程序时的后端。

当然,如果您的服务不会被重复使用,这对您来说可能并不重要,您可能非常精通以某种方式做事,尽管不是最可重复使用的,当然我们并不总是创造下一个亚马逊。但我仍然认为遵循最佳实践是个好​​主意,即使只是为了更好地以某种方式做事。