首页 > 解决方案 > 为什么要在前端使用 MVC 中的模型?

问题描述

我使用 Java(Spring MVC + Thymeleaf)完成了几乎所有的 Web 项目,它是 MVC 技术。最近我听说了 REST 并开始学习一些关于它的东西。我意识到这是我一生中见过的最酷的事情之一!(我只是在开玩笑,绝对不是)

我们所需要的只是将数据解析为 json 类型,然后将其返回到前端。而且在前端我们不再需要使用模型和它的对象。前端可以使用一个 GET 请求以 nice-to-work-with json 类型获取所有需要的数据!

我们不需要使用一些奇怪的 Thymeleaf 结构来处理错误或遍历模板中的列表!我们可以使用 javascript 及其框架处理所有事件并处理所有数据。它更强大。

是否存在我错过的东西?何时使用模型?何时使用 json 类型的数据?

标签: restspring-mvcmodel-view-controllerfrontendthymeleaf

解决方案


这是前端开发的两种(有些重叠)方法:在后端和前端生成页面。

使用后端模型和 Thymeleaf 模板(或任何其他 HTML 模板),您可以在服务器端生成网页。这意味着以下好处

  • 您可以用一种语言(Java)编写前端和后端逻辑;
  • 您可以在一个地方实施数据和安全约束——在后端,使用 Java 代码或配置;
  • 在许多情况下,用户获得他们的第一页会更快,因为渲染发生在服务器上,并且用户获得了已经渲染的页面;

但是这种方法有以下缺点:

  • 服务器必须渲染页面,这意味着服务器上的负载更大;
  • 无论如何,大多数现代网站和应用程序都使用 JavaScript,因此您至少必须编写一些 JavaScript;
  • 服务器生成的页面甚至不接近浏览器中可能呈现的页面。

为 JavaScript 前端提供 REST API,您将获得以下好处:

  • 您卸载服务器,因为大多数与 UI 相关的工作都发生在用户的设备上;
  • 您可以使用现代前端框架实现更多目标;
  • 在已经渲染的 UI 上导航更快,因为您不需要服务器渲染每个页面,您只需要获得相对较小的 JSON 响应,然后动态更新页面。

但是这种方法有以下权衡:

  • 用户通常会等待更长的时间才能看到他们的第一页,因为浏览器需要下载大量脚本,然后花时间在页面的动态呈现上;
  • 在大型应用程序中,您需要拥有一个全栈开发团队,或者两个团队分别在前端和后端工作;
  • 你必须用 JavaScript 编写你的 UI 逻辑。随心所欲:)
  • 您有时必须在前端和后端复制约束:例如,如果用户无法编辑字段,则必须在前端将其显示为只读,并在 REST 服务中添加验证,因为用户可能会尝试直接访问您的 REST API 并绕过前端验证;
  • 一般来说,您必须更加注意保护您的 REST API。

推荐阅读