从新学习web后端开发-005-了解先后端分离开发模式

分离是为了之后更好的相聚。- 匿名html

1. 什么是先后端分离

在做者早期参加工做时,web项目开发基本上是程序员加美工的组合,那个时候尚未明确的先后端的说法。一个web项目就像一道大杂烩,包括了界面和后端业务逻辑,同时前端的页面由后端进行渲染。前端

早期web项目结构

随着Ajax,尤为是nodejs的发展,前端的能力大大加强,工程化也愈来愈成熟。不少以前须要后端去作的事情,好比页面的渲染,前端已经彻底能够胜任。而且前端也不只仅局限于pc桌面,而是发展到移动端,tv等。近年来,先后端分离开发逐渐流行开来,尤为是在互联网方向,已经成为了主流的web开发方式。node

先后端分离开发

2. 先后端分离的优势

2.1 优势一:分工明确

专业的人作专业的事情。先后端分离后,前端人员能够专一于UI界面的设计开发,后端人员则能够专一于业务逻辑开发,提供前端调用的API接口。程序员

2.2 优势二:解除耦合

将前端UI界面和后端服务数据分离,能够将后端服务接口独立出来,服务于不一样的前端UI,好比传统PC桌面,移动端H5,APP等,提升了后端服务的可复用性和可维护性,同时也有利于向分布式微服务架构进行演变。web

2.3 优势三:提高效率

先后端未分离web开发模式以下图:后端

先后端未分离web开发模式

咱们能够看到,程序员要等待美工先导出html模板后,再开始整合模板,渲染页面。程序员承担了大部分的工做,包括页面的二次处理(数据渲染、页面整合等)以及后端业务逻辑的开发工做。api

先后端分离后web开发模式

先后端人员能够同时进行开发,互不干扰。双方遵循统一的规范(产品原型及API接口文档),各自进行独立的开发,开发完成后进行联合测试(俗称联调)。架构

3. 先后端分离后产生的主要问题

3.1 沟通成本上升

先后端分离前,程序员承担了大部分前端页面渲染和后端业务逻辑的工做,基本上没有太多的沟通成本。先后端分离后,前端须要承担页面设计和数据渲染的工做,数据须要经过调用后端提供的接口服务来获取。这样一来,统一的接口文档就成为前端和后端的主要契约,随着需求的调整以及项目的快速迭代,接口也会随之出现变更,这时双方之间的沟通成本将大大增长。若是没有良好的沟通机制和统一的接口文档管理将会致使双方扯皮,互相推诿,影响产品周期和团队建设。框架

那么如何解决这个问题呢?简单来讲就是:统一规范!也就是统一沟通机制以及接口文档管理。主要有如下几点建议:前后端分离

  • 接口文档由先后端中的一方进行统一管理。另一方必须根据接口文档开展相应的工做。

    至因而由前端去管理仍是后端去管理,能够综合团队先后端人员的能力、业务理解程度等方面状况来决定。

  • 对接口文档的变动操做,必需要先体如今接口文档中,并通知到相应人员。切记不要过后再去更改文档!

  • 按期会议沟通,可集合团队具体的沟通机制进行。

  • 使用接口文档管理系统,对接口进行统一的管理。同时不少接口文档管理系统还会提供接口版本管理、mock server,接口测试等功能。

    推荐使用YAPI接口管理系统,能够为开发、产品、测试人员提供更优雅的接口管理服务。具体使用详见其官网。

3.2 前端模拟后端接口问题

前端须要有一个可以模拟接口及其数据的服务,这样前端的开发进度就不依赖于后端的开发进度,双方就能够根据统一的接口文档各自开展工做,而统一的mock server就比不可少了。上面推荐的YAPI接口管理系统,就能够提供相应的mock功能。

这里须要注意一个问题,那就是mock server很难彻底覆盖到后端全部的接口业务逻辑。这也是为何须要联调的缘由。毕竟mock的环境与真实的环境仍是存在必定的差别。不过只要根据规范来作,能够大大提升联调的效率,节省时间。

3.3 测试介入太晚,拉长产品周期

针对这个问题,做者的经验是只要接口文档肯定好,测试就能够根据接口文档写对于的接口测试用例了,同时还能够和一些接口测试自动化工具结合在一块儿,而没必要等到联调完成后才介入。

总的来讲,在互联网、移动互联网等大部分web相关方面,能够优先考虑采用先后端分离的方式进行web项目的开发。固然,没有任何的技术、框架或者方案是银弹,可以一招走天下,咱们须要综合考虑项目、团队、成本等多方面因素,采用合适的方案。

4. 小结

本节主要介绍了先后端分离的基本概念、优势、实践中存在的问题以及对应的解决思路和建议。从下一节开始,咱们将结合实际的案例开始一步一步的实战探索web后端接口开发的过程及其细节。

相关文章
相关标签/搜索