大数据时代到来。互联网项目对性能的要求持续提高。前后端耦合架构越来越难以符合需求。于是前后端分离这种架构就产生了。
传统架构痛点
传统项目大多用jsp来展示数据。过去流量少,对性能的要求没那么高。但现在不同了,动态资源和静态资源完全耦合在一起,服务器压力非常大。像css、js以及图片的http请求都得处理,服务器不堪重负,开发效率也受到了影响。比如说有个小型网站,因为资源耦合,服务器老是卡顿。
以前UI设计图完成后,前端负责切出html。之后由java工程师将其套成jsp页面。然而页面中js数量较多,导致出错率较高。并且修改问题时需要双方协同合作,效率较为低下。比如某公司的项目,修改页面样式时需要来回沟通,耗费了大量时间。
性能提升困境
jsp 只能在支持 java 的 web 服务器运行。比如 jetty、resin 等。它无法用 nginx。nginx 单实例 http 并发高达 5w 这个优势用不上。所以性能根本提不上去。比如说一些老项目只能依赖 jetty。这样网页响应速度慢。导致用户体验变差。
前端工程师使用java的ide,还要配置后端开发环境,这很不方便。前端工程师可能更擅长前端工具,对后端环境不熟悉,这增加了开发难度。有个新入职的前端工程师,就因为后端环境配置问题,耽误了工作。
前后端强依赖弊端
后端得等前端把html做好了才能套jsp,前后端开发存在很强的依赖关系。只要前端进度慢下来,后端就只能等着。比如说有个电商项目,前端页面延迟了,后端就只能干巴巴地等着,这影响了项目上线的进度。
需求发生变更时。要是前后端存在强依赖。那么两边都需要修改代码。要是页面样式和接口都有变化。前后端都得花费时间去调整。这会造成人力和时间的浪费。
前后端分离优势
前后端分离后能够并行开发。不存在强依赖关系。开发效率得到大幅提升。只要接口以及参数保持不变。需求变更时无需两边都修改代码。某大型互联网公司采用这种分离模式后。开发周期缩短了三分之一。
页面问题归前端管,接口数据问题归后端管,分工清晰。如此一来,出问题能很快找到责任人,解决问题更有效率。像页面样式出了错,前端工程师能马上处理。
并行开发好处
接口能够共同使用。要是有微信轻应用或者 app 服务,借助代码重构可以大量重复使用。就像某个综合服务平台,微信端和 app 端重复使用接口,节约了开发成本以及时间。
前后端各有其专注擅长的领域。前端专注于页面。后端专注于接口。如此可提升项目质量。比如说前端工程师对页面进行优化后。用户访问网页会更加流畅。
项目实施要点
需求会议时前端和后端都得参加。要制定好接口文档。后端要写好测试用例。推荐使用相关插件来写测试用例。比如junit能用来写测试用例。某项目因为没写好测试用例。上线之后出现了很多问题。
要明确各自的职责分工。这样才能避免出现问题时相互推诿。大家都按规则办事。项目才能够顺利推进。就像某小团队项目混乱。原因就是职责不清楚。
你所在项目采用前后端分离了没?效果咋样?赶紧在评论区分享。还要点赞并分享本文。