9cbd636ebf2d1158c3ca06acb58fa4d3.gif

点击上方蓝字 关注我们

6645823f5f8bf72df4542a0e9b66e64b.gif

导读

    随着互联网的高速发展以及IT开发技术的升级,前后端分离已成为互联网项目开发的业界标准使用方式。许多公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事,后端工程师只管后端的事。正所谓术业有专攻,把各自优势发挥到极致!

7a514a84e327bf139a5d018b947fa800.gif

    之前的文章也谈到过什么是前端、后端。

    前端:是写代码给浏览器看的。

    后端:是写代码给服务器看的。

    把前端与后端独立起来去开发,放在两个不同的服务器,需要独立部署。两个不同的工程,两个不同的代码库,不同的开发人员,前后端工程师需要约定交互接口,实现同步开发。开发结束后需要进行独立部署,前端通过接口来调用调用后端的API,前端只需要关注页面的样式与动态数据的解析和渲染,而后端专注于具体业务逻辑。

    核心思想是前端html页面通过AJAX调用后端的restuful api接口并使用json数据进行交互。

ccdeb7d185f375014938ebff21a99adc.png

前端工程师

对于前端工程师而言

    把精力放在html5、css3、jquery、angularjs、bootstrap、reactjs、vuejs、webpack、less/sass、gulp、nodejs、google v8引擎、JavaScript多线程、模块化、面向切面编程、设计模式、浏览器兼容性、性能优化等。

    前端更加追求的是:页面表现、速度流畅、兼容性、用户体验等。

后端工程师

对于后端工程师而言

    把精力放在java基础,设计模式,jvm原理,spring+springmvc原理及源码,linyx、mysql事务隔离与锁机制、mongodb、http/tcp、多线程、分布式结构、弹性计算架构、微服务架构、java性能优化、以及相关的项目管理等。

    后端更加追求的是:三高(高并发、高可用、高性能)、安全、存储、业务等。

7a514a84e327bf139a5d018b947fa800.gif

传统开发

前后端分离前的开发模式:

b482e27faf9fc00db04d0295a9e0113f.png

    前端写好静态的HTML页面交付给后端开发。静态页面可以本地开发,也无需考虑业务逻辑只需要实现View即可。

    后端使用模板引擎去套模板,同时内嵌一些后端提供的模板变量和一些逻辑操作。

    然后前后端集成对接,遇到问题,前台返工,后台返工。

    然后在集成,直至集成成功。

    这种模式的问题

   在前端调试的时候要安装完整的一套后端开发工具,要把后端程序完全启动起来。遇到问题需要后端开发来帮忙调试。我们发现前后端严重耦合,还要要求后端人员会一些HTML,JS等前端语言。前端页面里还嵌入了很多后端的代码。一旦后端换了一种语言开发,简直就要重做。

    像这种增加了大量的沟通成本,调试成本等,而且前后端的开发进度相互影响,从而大大降低了开发效率。

7a514a84e327bf139a5d018b947fa800.gif

分离开发

    前后端分离并不只是开发模式,而是web应用的一种架构模式。在开发阶段,前后端工程师约定好数据交互接口,实现并行开发和测试;在运行阶段前后端分离模式需要对web应用进行分离部署,前后端之前使用HTTP或者其他协议进行交互请求。

01

82ff1e11328bd8d67d6f76fdde51c9b8.gif

客户端和服务端采用RESTFul API的交互方式进行交互

6c2a37cb11e0051f5d29de8677448e96.png

02

82ff1e11328bd8d67d6f76fdde51c9b8.gif

2. 前后端代码库分离

ffd4c6ccdcfc01de9483c40e102a9a08.png

    在传统架构模式中,前后端代码存放于同一个代码库中,甚至是同一工程目录下。页面中还夹杂着后端代码。前后端工程师进行开发时,都必须把整个项目导入到开发工具中。

    前后端代码库分离,前端代码中有可以进行Mock测试(通过构造虚拟测试对 象以简化测试环境的方法)的伪后端,能支持前端的独立开发和测试。而后端代码中除了功能实现外,还有着详细的测试用例,以保证API的可用性,降低集成风险。

03

82ff1e11328bd8d67d6f76fdde51c9b8.gif

并行开发

f759c8fe1d5df3a428646e8a3b83dae0.png

    在开发期间前后端共同商定好数据接口的交互形式和数据格式。然后实现前后端的并行开发,其中前端工程师在开发完成之后可以独自进行mock测试,而后端也可以使用Postman等接口测试软件进行接口自测,然后前后端一起进行功能联调并校验格式,最终进行自动化测试。

a08281944e5833259219580372108318.png9122fde75fc58f70cf4bd60ef35f2c93.png7a514a84e327bf139a5d018b947fa800.gif

前后端分离优点

    1、彻底解放前端。前端不再需要向后台提供模板或是后台在前端HTML中嵌入后台代。

    2、提高工作效率,分工更加明确。前端只关注前端的事,后台只关心后台的活,两者开发可以同时进行,在后台还没有时间提供接口的时候,前端可以先将数据写死或者调用本地的JSON文件即可,页面的增加和路由的修改也不必再去麻烦后台,开发更加灵活。

    3、局部性能提升。通过前端路由的配置,可以实现页面的按需加载,无需一开始加载首页便加载网站的所有的资源,服务器也不再需要解析前端页面,在页面交互及用户体验上有所提升。

    4、降低维护成本。通过目前主流的前端MVC框架,我们可以非常快速的定位及发现问题的所在,客户端的问题不再需要后台人员参与及调试,代码重构及可维护性增强。

    5、实现高内聚低耦合,减少后端(应用)服务器的并发/负载压力。

    6、即使后端服务暂时超时或者宕机了,前端页面也会正常访问,但无法提供数据。

    7、可以使后台能更好的追求高并发、高可用、高性能,使前端能更好的追求页面表现、速度流畅、兼容性、用户体验等。

2bc6540a176ac5743b38faf45a84e4e8.png

请扫码

给个关注

e414826221ae314069470244d32230da.png

小马技术圈

交流 | 分享

版权声明:凡非原创内容,皆秉承分享宗旨。图文整理自网络公开信息,版权属原持有人,亦非本公众号观点,如有侵权,请联系我们删除。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐