为啥很少前端开发会对接口数据定义Model?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥很少前端开发会对接口数据定义Model?相关的知识,希望对你有一定的参考价值。

参考技术A ‍‍

对于所有客户端(包括但不限于前端)开发来说,ViewModel 其实一直都是存在的,只不过在 MVVM 之前,Model 和 ViewModel 几乎是等价的,甚至前端的 Model 和后端的 Model 也都是等价的,从而后端的 Model 就直接可以用作前端的 ViewModel。RESTful 风格的接口打破了前后端之间这种心照不宣的默契,前端工程师突然发现后端接口返回的数据不能再直接映射到自己的 ViewModel 上了,这才有了现在越来越多的前端工程师希望参与到数据 Model 的定义中。因为一旦后端开发定义了所有的数据 Model 并开发完了相应的 CRUD 接口之后,所有的业务复杂度就将全部落在前端开发这边,两边提前根据各自的需求讨论数据 Model 的定义其实达到的是均分业务复杂度的目的。

‍‍
参考技术B ‍‍

前端开发不定义 Model 是从上个时代带过来的不好的习惯,因为在 MVVM 流行之前,开发模式里没有 Model 之类的概念。但是 MVVM 本来就是 Model ViewModel View 的分层,不定义 M 和 VM ,这个分层也没有什么意义了。事实上,定义 Model 最大的好处是,将数据源头的实体做一个固定而准确的描述,这个对于串联理解整个应用非常重要,特别是在重构或者接手别人的代码的时候,你需要准确的知道一个页面(或者是一个模块)它会包含哪些数据,这些数据分别有哪些字段。假象下,你接手的一个非常复杂的应用,里面没有 Model 的定义,甚至没有 VM 的定义,你会发现你无从下手,因为你不知道服务端会给你什么数据,你只知道视图上渲染了什么数据。

‍‍
参考技术C ‍‍

应该说对于当时的这些前端项目,没有 Model 的概念是很正常的,甚至如果你了解当时的开发流程的话,这些 html 模板文件基本都是后端工程师写好之后才交给前端开发的。这个时候前端开发只需要做三件事:根据页面布局调整 HTML 骨架结构,毕竟很多后端工程师写的模板都或多或少会存在一些布局上的缺陷;根据视觉设计写 CSS,也是最主要的工作;根据业务需求写一些简单的事件去响应用户操作。在这个阶段,前端开发甚至连数据请求都不需要关心,所有的页面都是由服务端渲染好的,每个页面也几乎都是相互独立的。对于相关联的页面,后端通过操作 Cookie,Session 以及 URL 中的请求参数,基本就可以搞定所有客户端所需要的用户数据,页面状态数据等。在这样的前提下,前端开发自然很少会关心数据层的问题,而是将更多的精力放在 UI 层及各种变态的浏览器兼容问题上。从个人的感受及观点来看,最早对上述的这种开发方式提出挑战的,其实并不是前端开发,而是后端开发,具体来说是 RESTful 风格的 API 真正开始普及之后,大约是 2010 年左右,也就是 AngularJS 正式发布之前。RESTful API 让后端开始思考如何使用原子化的数据模型来应对层出不穷的需求,简单来说就是我们后端将所有最细粒度的数据资源全部开放出去,至于业务逻辑将来要怎样使用,我们就不管啦。应该说后端开发的这种做法间接地促成了后来的前后端分离,而前后端分离又直接促成了 2013 年之后以 React 为代表的前端 MVVM 框架的繁荣。

‍‍

以上是关于为啥很少前端开发会对接口数据定义Model?的主要内容,如果未能解决你的问题,请参考以下文章

「产品前端架构」接口设计

前端开发流程---我们应该做些什么

前端面试题汇总(主要为 Vue)

前端使用自定义接口内容

uniapp小程序图片前端压缩上传

为啥 Web 前端开发不抛弃 HTML 和 CSS,用纯 JavaScript 开发