【问题标题】:Choosing between Thymeleaf and Angular for a new Spring MVC project [closed]为新的 Spring MVC 项目选择 Thymeleaf 和 A​​ngular [关闭]
【发布时间】:2017-11-02 05:40:11
【问题描述】:

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

我对在多个项目中使用的Thymeleaf 模板框架非常满意,但我正在评估Angular (v2) 作为一种可能的替代方案。

我是客户端 MVC 框架的新手,我想了解是否有一些指导方针可以决定哪个选项最适合 Web 项目。

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

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

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

【问题讨论】:

  • 可以同时使用它们,我已经在一些项目中做到了:) 至于这是否是好的做法,我不能告诉你。
  • 使用JHipster,您可以同时使用两者。如果您想使用带角度的弹簧,我认为这是最好的解决方案。
  • 谢谢你们。我仍在尝试了解同时使用这两个框架或仅选择其中一个框架是否有意义。但我也想深入了解他们两者的真正优势是什么,才能做出正确的选择。

标签: java spring angular spring-boot thymeleaf


【解决方案1】:

Thymeleaf 和 A​​ngularJS 并不相互排斥。您当然可以一起使用它们,具体取决于您要完成的工作。如果你全神贯注于编写单页动态 Web 应用程序,Thymeleaf 可能是不必要的。

谈到您关于客户端框架与服务器端框架的问题,我是一名企业软件工程师,所以我不是在创建商业软件,我的首要任务不是它看起来有多漂亮(一点 Bootstrap 就可以了) ) 以及更多关于稳定性、浏览器兼容性(即使是旧版浏览器)和可维护性的信息。我个人避免使用单页动态 Web 应用程序,因为我发现代码库在非平凡应用程序中更难管理;在我看来,一个大型的 Javascript 代码库可能是一个负担。主要在服务器端构建我的页面为我提供了更好的调试功能(Java 将为您提供大量使用 Javascript 无法获得的编译时帮助)和更轻松的日志记录。我确实在客户端使用 javascript(主要是 jquery),但通常我的 web 应用程序构建为在用户关闭 javascript 时优雅地降级。同样,这些是支持业务的内部、实用的应用程序。我没有时间就这个主题写一篇完整的论文,还有很多我没有涉及的细微差别,但希望这很有用。

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

【讨论】:

  • 我认为他不是指 Angular JS
  • @AnnaKlein,你是对的,他们现在只是称它为 Angular,但它仍然是同一个动物,一个前端 Javascript 框架。
  • 我不完全同意以下答案。最重要的区别是后端服务的可重用性。当您使用 thymeleaf 时,您会将字符串片段/页面返回到客户端,而如果您使用 angular,您可以将对象(json 响应)返回到客户端,以便不同的客户端(网络、移动设备等)使用。当然,您可以同时使用它们。
【解决方案2】:

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

一般来说,你的模板不应该影响你的 JavaScript 代码,有些人会模板他们的 JavaScript 代码,但恕我直言,这是一个糟糕的主意。而是使用模板来替换 HTML 中的标签属性,并使用 Javascript 来使您的网站与您选择的任何库一起动态化。

我不知道你的意思是什么

客户端方法而不是服务器端实现

但我现在看到的是 2 种不同的方法,创建 Microservies VS Monolith web 应用程序。如果您完全在 Thymeleaf 中开发您的网站,您将不会使其非常可重用。 Netflix、Amazon、Uber 等都创建了服务(有时称为微服务),这些服务通过 REST API 在整个组织中重复使用。

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

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

【讨论】:

  • 请留下评论以拒绝投票,谢谢。
  • 你可以让thymeleaf使用rest服务,使用微服务架构...
  • 在选择前端框架/模板时,微服务或单体应用并不重要。
  • 恕我直言,为 UI 端选择 Thymeleaf 并不意味着选择单体架构。
  • 问题是,如果您通过模板插入数据,而不是通过 javascript 调用 web 服务,那么模板化 webapp 将需要包含您的网站所需的所有服务,随着时间的推移会导致单体应用。跨度>
猜你喜欢
  • 1970-01-01
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2017-04-27
  • 2016-01-12
  • 1970-01-01
相关资源
最近更新 更多