前后端分离

JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?2.0版,为分布式架构打基础。

分离原因:

一、术业有专攻
后端工程师可以只管后端的事情,而不用自己写前端。

对于后端java工程师:
把精力放在java基础,设计模式,jvm原理,spring+springmvc原理及源码,linux,mysql事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构(dubbo,dubbox,spring cloud),弹性计算架构,微服务架构(springboot+zookeeper+docker+jenkins),java性能优化,以及相关的项目管理等等。
后端追求的是:三高(高并发,高可用,高性能),安全,存储,业务等等。

对于前端工程师:
把精力放在html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,Google V8引擎,javascript多线程,模块化,面向切面编程,设计模式,浏览器兼容性,性能优化等等。
前端追求的是:页面表现,速度流畅,兼容性,用户体验等等。

二、耦合性强,JSP痛点
1、动态资源和静态资源全部耦合在一起,服务器压力大,JSP必须要在支持java的web服务器里运行(例如tomcat,jetty,resin等),无法使用nginx。
2、UI出好设计图后,前端工程师只负责将设计图切成html,需要由java工程师来将html套成jsp页面,出错率较高(因为页面中经常会出现大量的js代码),修改问题时需要双方协同开发,效率低下。
3、第一次请求JSP,需要先在服务器中编译成SERVLET,再通过输出流输出HTML,效率较低。

分离优势:

一、前后端解耦,NGINX+TOMCAT
二、快速定位BUG
三、在大并发情况下,可以同时水平扩展前后端服务器
四、减少后端服务器的并发/负载压力
五、即使后端服务暂时超时或者宕机了,前端页面也会正常访问,只不过数据刷不出来而已。
六、后端接口可以复用
七、AJAX异步加载,速度快
八、即使后端服务暂时超时或者宕机了,前端页面也会正常访问,只不过数据刷不出来而已。
九、增加代码的维护性和易读性,提升开发效率

总结

前后端分离并非仅仅只是一种开发模式,而是一种架构模式(前后端分离架构)。
需要区分前后端项目,放在两个不同的服务器,需要独立部署,两个不同的工程,两个不同的代码库,不同的开发人员。
前后端工程师需要约定交互接口,实现并行开发,开发结束后需要进行独立部署,前端通过ajax来调用http请求调用后端的restful api。
前端只需要关注页面的样式与动态数据的解析&渲染,而后端专注于具体业务逻辑。

你可能感兴趣的:(前后端分离)