对前后端分离的一点理解
对前后端分离的认知经历了一个比较长的过程。
初体验
记得大一的时候,我从一个同学那儿第一次听说了“前端”和“后端”这两个名词,我就问他什么是前端和后端啊,他告诉我前端就是用户可以看到的那部分,后端就是用户看不到的部分。
初认识
在学习MVC的时候,我了解到。传统的开发模式因为耦合性很高,所以有很多缺点。但是我只是听别人说耦合性高,自己从来没有试过传统的写法。在写了一些MVC架构的demo之后,才对这一点有了更深的理解。
在学习WEB开发的时候,我用到了模板引擎(Pebble,ThymeLeaf)。用模板引擎可以把数据渲染到html页面上,等到我牛刀小试之后,对前后端分离有了新的认识。此时的我认为,前端写html、css,后端操作数据库,处理业务逻辑,把数据渲染到html上。前后端各司其职,这就是前后端分离。
在最开始学习用spring写一个RESTful服务的时候,我不明白这东西有什么用。直到我学习到了Ajax,我才明白原来这东西是这样用的啊,此时对前后端如何交互有了新的认识。
再后来,在我开始学习Vue的时候,我觉得这和ThymeLeaf等模板引擎不就是一回儿事儿嘛,他们负责把数据渲染到页面上,语法上也很相似。既如此,为什么把Vue叫做前端框架,把ThymeLeaf叫做模板引擎呢。
再认识
现在的我对前后端分离这件事儿又有了新的理解,是否可以称之为前后端分离,关键在于传输的数据,也可以这样说,浏览器和服务器两者,到底是谁把数据渲染到页面上的。
前后端不分离是怎样的?
把数据渲染到页面这个过程是在服务器完成的,传输的数据是整个html页面。
前后端分离是怎样的?
把数据渲染到页面这个过程是在浏览器完成的,传输的数据是需要渲染的数据。
为什么需要前后端分离呢
前端工程师和后端工程师的任务截然不同,正所谓闻道有先后,术业有专攻,分工合作,各司其职可以提高效率。
让服务器传输整个html页面势必会造成许多浪费,也会增加服务器的压力。
越是复杂的项目越需要解耦,简单的项目可以随便来。
纸上得来终觉浅,绝知此事要躬行。