rest - 为什么要在前端使用 MVC 中的模型?
问题描述
我使用 Java(Spring MVC + Thymeleaf)完成了几乎所有的 Web 项目,它是 MVC 技术。最近我听说了 REST 并开始学习一些关于它的东西。我意识到这是我一生中见过的最酷的事情之一!(我只是在开玩笑,绝对不是)
我们所需要的只是将数据解析为 json 类型,然后将其返回到前端。而且在前端我们不再需要使用模型和它的对象。前端可以使用一个 GET 请求以 nice-to-work-with json 类型获取所有需要的数据!
我们不需要使用一些奇怪的 Thymeleaf 结构来处理错误或遍历模板中的列表!我们可以使用 javascript 及其框架处理所有事件并处理所有数据。它更强大。
是否存在我错过的东西?何时使用模型?何时使用 json 类型的数据?
解决方案
这是前端开发的两种(有些重叠)方法:在后端和前端生成页面。
使用后端模型和 Thymeleaf 模板(或任何其他 HTML 模板),您可以在服务器端生成网页。这意味着以下好处
- 您可以用一种语言(Java)编写前端和后端逻辑;
- 您可以在一个地方实施数据和安全约束——在后端,使用 Java 代码或配置;
- 在许多情况下,用户获得他们的第一页会更快,因为渲染发生在服务器上,并且用户获得了已经渲染的页面;
但是这种方法有以下缺点:
- 服务器必须渲染页面,这意味着服务器上的负载更大;
- 无论如何,大多数现代网站和应用程序都使用 JavaScript,因此您至少必须编写一些 JavaScript;
- 服务器生成的页面甚至不接近浏览器中可能呈现的页面。
为 JavaScript 前端提供 REST API,您将获得以下好处:
- 您卸载服务器,因为大多数与 UI 相关的工作都发生在用户的设备上;
- 您可以使用现代前端框架实现更多目标;
- 在已经渲染的 UI 上导航更快,因为您不需要服务器渲染每个页面,您只需要获得相对较小的 JSON 响应,然后动态更新页面。
但是这种方法有以下权衡:
- 用户通常会等待更长的时间才能看到他们的第一页,因为浏览器需要下载大量脚本,然后花时间在页面的动态呈现上;
- 在大型应用程序中,您需要拥有一个全栈开发团队,或者两个团队分别在前端和后端工作;
- 你必须用 JavaScript 编写你的 UI 逻辑。随心所欲:)
- 您有时必须在前端和后端复制约束:例如,如果用户无法编辑字段,则必须在前端将其显示为只读,并在 REST 服务中添加验证,因为用户可能会尝试直接访问您的 REST API 并绕过前端验证;
- 一般来说,您必须更加注意保护您的 REST API。
推荐阅读
- jenkins - 詹金斯构建触发器不等待孩子的孩子完成
- node.js - 在 Restify API 中实现的 Socket.io 的蝗虫负载测试导致显着减速
- ruby-on-rails - 找不到表(升级到较新的 Ruby 和 Rails 版本后)
- maven - 复制编译好的maven项目
- artifactory - 将作用域 npm 包发布到 Artifactory Online
- rest - REST calculateroute 想要提供到达时间来确定何时离开
- javascript - 父组件中的复选框不会触发 React.js 子组件中的功能
- azure-active-directory - 在 Azure AD 企业应用程序中发送直接链接以邀请 B2B 用户
- sql - 这个替换 JSON 文本的 SQL 查询是什么意思?
- html - 如何从 html 文件创建子页面