前后端分离只知道技术点可不行

今天要分享的话题是 我所理解的前后端分离的根本 欢迎大家评论区讨论

别上来就谈啥技术点啦!学前端的学后端的谁还不知道是哪些技术点呢?

照顾不理解的新人

狭义上的前后端分离,是从技术点上来表述的。也就是大家所理解的如今非常火热的开发模式,前端负责调用接口渲染页面和收集数据传递给后端,后端负责处理前端传递的数据和 返回前端需要的数据接口

举一个通俗一点的例子,超市提供半成品和熟食,你买熟食就是直接吃,这就是不分离;你买半成品回家还得二次处理,这就是分离

如何辨别当前项目是否分离呢

这里先明确一下什么是前端什么是后端,很多小伙伴把--前台后台和前后端--搞混了,这完全不是一回事啊

前端通常指,所见即所得,我们所能见到的页面,所能完成的交互包括其实现的逻辑;代码在浏览器端执行

后端通常指,看不到的用来提供数据,处理业务逻辑,完成数据分析等等的功能代码在服务器上面执行

一个简单的辨别方案就是,当前网页打开 f12 开发者模式,刷新页面查看页面加载网络的response是否返回的完整的页面和数据,如果是 ,那么就是服务端渲染,为不分离开发模式

当然只是狭义上面的前后端分离 那么真正的关于前后端分离

还涉及到开发分离 人员分离 测试分离 部署分离 维护分离 关注点分离

背景

现在很多人入行都会选择前端学习了,业内也喊出了大前端的口号,那么在以前,在国内是完全没有这个概念的,还是大家口中的页面仔,只负责静态页面的编写,然后交给后端程序员,完成动态的拼接,甚至js代码也是后端程序员在写的,那么可想而知,地位是非常低的,大部分的人都是挤破头往后端学,所以后来页面都是后端程序员在编写

为什么会出现前后端分离

归功到底还是 省钱!人效!

这一点从何而来呢?你可能会疑惑,原本写一个网站一个人,现在一个写页面,一个写后端,怎么谈得上省钱呢?这一点后面再说

这里先纠正一个技术误区,写前端不只是写网页 还有 app 小程序 以及一些物联网的页面展示,后端也不只是网页接口,还有数据处理 ,数据爬取,数据分析, 定时任务等等 返回接口只是最终的一个输出而已

这里会稍微啰嗦一点,大家耐心一点听

耦合度

那么我们回顾一下传统的开发,原本的诸如 jsp .net php 的网页开发都是在后端将数据处理完成,填充到页面中,然后再将页面统一返回给用户

那么这个耦合度就是相当的高了,不论是开发还是维护,肯定都是以前搞后端的在弄,那么假如只需要修改页面中的某一个元素,还得是将整个项目重新部署

后来有了动静分离,也就是将页面中的静态代码和后端代码分离,可以单独部署静态数据,但是仍然没有将开发分离

业务发展

写后端的程序员大部分写页面都不咋的,写css啊js啊都是拼拼凑凑,能用插件的绝对不会自己写,那么就会造成整个系统的页面风格不统一,代码层次不齐,完全没有工程化的意思,以前网速慢业务少还好说,大家能看到页面就行了,也不计较更好的效果了,这点大家参考自己的学校官网就了解了

后来啊网速快了,业务量大了,我去全部都是后端处理,服务器它也不干啊,加上浏览器性能的快速提升,能不能把更多的逻辑让浏览器去处理呢?

行业细分

这里就有了一个问题了,让浏览器去处理,页面的js代码越来越多,越来越复杂。以前那一套肯定是行不通的,你再让后端程序员写肯定也是不行的

加上页面越来越复杂,逻辑越来越多,写前端的和写后端的逻辑和关注点也是大不相同的,那么就非常需要更专业的人来做这个事情

这就逐渐独立出前端这个类别

分离点

一谈前后端分离大家都知道 后端返回restful接口,前端spa框架渲染数据,那么这个分离点是怎么来的呢? 后端你不想写页面对吧?那行,页面全给前端写,页面都给前端写了,数据渲染还怎么办呢? 这里就考虑 app 的开发模式,我后端能不能只负责提供数据,然后你前端来渲染处理呢?

当然是可以的,在前后端分离前期,还是通过ajax获取数据然后简单的操作dom来渲染数据

这个不论是性能还是可拓展性都是非常差的,那么我们前端拿到数据以后能不能再次细分一下呢?把1获取数据,2处理数据,3页面展示;这几个步骤类似以前的传统mvc开发一样分割一下,结合网页开发的特点发展到后来的 mvvm 的开发模式,也就有了现在非常火热的vue angular react 框架

至此,前端才有了真正独立的开发,后端也能专心的写他的接口了,双方通过约定好得api进行开发,完全可以做到互不干扰

生态发展

那么前端开发还是像以前那样东拼西凑肯定是不行的,想要统一的风格 UI库来了,想要工程化,打包工具 模块化开发来啦,前端就真的成体系的发展了

页面仔翻身把家当

回到上面的问题来,为啥省钱

细分的行业,更为专业的开发人员,不论是效率和质量都大大提高
接口复用,一套接口可以响应式的返回给网页 app 小程序等不同平台
后期拓展性提高,可维护性更强
综合下来是更为省钱的

好不好

说点通俗的话,当前这么火热,除了跟风为了分离而分离的小公司,存在肯定是合理的

来看一个场景,哪一种方式的体验更好不用多说了吧

#

#

那么为啥不都使用分离呢?

spa的框架有如下的缺点

  • 不利于seo
  • 首屏加载速度慢,白屏时间长
  • 数据传输的安全性
  • ...

基于以上的问题,有些会采用骨架屏或者首页服务端渲染的方式也就是ssr,所以你看到的很多网页都是结合着开发的而不是单一的模式

短时间内,不分离的模式肯定是不会消失的,jsp不用了 又有了 freemaker thymeleaf,node 的众多ssr方案,php还有这么多的页面模板

所以努力学啊,学不动就只有回家喂猪了