前后分离模式前世今生 ​

2020-05-13 11:31发布

    现在的web开发体系可以说是在15年后才逐渐形成,因为15年比较特殊,html5和ES6都是在这一年发布,css3的最后一次更新在2014年。这些变更带来的变化是产生了前后分离的开发方式。

以前的前端开发服务端渲染比较多,比如jsp,php,asp等。虽然也离不开html的成分,但是html最终要变成动态页,html里面要嵌入模板语法;变成jsp或php等代码;这样一来这个工作就复杂了,静态页谁写?php代码谁写?

    在更早期的web开发中,这两个工作是一个人就可以做到的,我们可以认为这是最早期的全栈开发者;但随着时代的发展,社会需求越来越复杂,项目也越做越大、越做越复杂;所以这个人没有那么多精力既做静态页html,又去做java或php等后台代码的开发;换个角度去看这个问题,如果还是一个人开发,那开发速度就慢多了,而且中途别人不好插手他的工作。

    所以这个html静态页开发的工作就交给专门的人去做了,这就是最早期的web前端开发者,从事的是纯前端工作。但是我们说过这个这个静态的html是要嵌入模板语法转换为jsp或php的,所以当这个前端开发者完成他的工作之后,需要把他开发的html静态页交给后台的开发人员,嵌入模板语法。此时你可能想问为什么这个前端开发者不能嵌入后台的模板语法,原因很简单,他可能不会,也不清楚后台代码写的逻辑,所以这个工作他必须要交给后台的那个开发者去做。

    这样一来,原来的工作分成了两个人做,开发速度上去了。但是如果前端代码需要修改调试,情况就复杂了;因为这个前端开发者他搞不定了,这时候的页面不再是那个静态html了,是嵌入了后台模板语法的动态页jps,php等。这个前端开发者他没有调试的环境,需要到后台开发者那里去改,所以这很麻烦。最近1-2年我也见过有人还在做这样的事情。

    这种情况在15年后得到了彻底的解决,因为vue和react等框架的前端模板语法相比jquery的dom操作简直是天上地下的区别;之前因为前端模块化鱼龙混杂和发展的不成熟,并没有真正将前后端分离开,这时候把前端和后台彻底分清楚了;前端负责请求和渲染数据,后台则提供api请求接口,各自关注各自的工作。开发效率再一次提升,前端也不存在去后台那里调试代码的问题了。

    但是技术在发展,时代也在发展,一个项目现在需要PC端,pad端,手机端的三重展示;实际来说后台提供的数据是不变的,但是前端的展示形式不同决定了接口不同,后台需要为你提供3套接口,还要了解你的展示逻辑才能去组织数据,这无疑加重了他的工作;工作总是需要有人来做的,这个工作事实上给前端开发者更合适,因为他是完全理解这个页面逻辑的,可是这个前端开发者该怎么做呢?他自己可不会写接口。那么我们的主角登场了,事实上他可以通过Nodejs做一层转接,用nodejs去请求后台的接口,然后针对不同的展示端使用nodejs再自行封装几套接口出来;这样问题就解决了。可能你想说为什么必须是nodejs,其他不行吗?事实上都可以。nodejs有它的不可替代优势,作为前端开发者nodejs是友好的,都是ECMAScript语法,上手相当容易。Nodejs的单线程,异步io,非阻塞特点,可以产生更大的并发量,配合后台的nginx服务器,可以极大的提升网站访问的并发量,我们做网站不就希望更多人访问吗?

    但这一步我目前还没有看到很多公司运用,这在具备规模的一些公司早就实施起来了,所以我相信这必然会是这1-2年的主流模式。

学习使人进步,加油~