对java前后端分离的理解

Posted 陈灬大灬海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对java前后端分离的理解相关的知识,希望对你有一定的参考价值。

到目前为止,身为一个java后端开发人员的我,

在工作期间,无非就是ui设计页面,前端开发html,之后将做好的页面交给我,我负责后台逻辑一件html的页面渲染。

好好滴一个后台开发人员,莫名其妙的做起了前端的活,很是心累啊。

 

一直不明白前后端分离是啥情况,今天看了一篇博客,说的真到位。

偏头痛杨 看就对了,到位。

 

先前一件公司使用jsp,效率着实够低。

jsp必须要在支持java的web服务器里运行

4.第一次请求jsp,必须要在web服务器中编译成servlet,第一次运行会较慢。

5.每次请求jsp都是访问servlet再用输出流输出的html页面,效率没有直接使用html高(是每次哟,亲~)。

6.jsp内有较多标签和表达式,前端工程师在修改页面时会捉襟见肘,遇到很多痛点。

7.如果jsp中的内容很多,页面响应会很慢,因为是同步加载。
web服务器:一般指像nginx,apache这类的服务器,他们一般只能解析静态资源。
应用服务器:一般指像tomcat,jetty,resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好。
一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。
对于后端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多线程,模块化,面向切面编程,设计模式,浏览器兼容性,性能优化等等。
前端追求的是:页面表现,速度流畅,兼容性,用户体验等等。

之前讲师说做一个全战的程序员,前后端通吃,我发现,入门很容易,深入真的很难

正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。
开发模式

以前老的方式是:
1.产品经历/领导/客户提出需求
2.UI做出设计图
3.前端工程师做html页面
4.后端工程师将html页面套成jsp页面(前后端强依赖,后端必须要等前端的html做好才能套jsp。如果html发生变更,就更痛了,开发效率低)
5.集成出现问题
6.前端返工
7.后端返工
8.二次集成
9.集成成功
10.交付



新的方式是:
1.产品经历/领导/客户提出需求
2.UI做出设计图
3.前后端约定接口&数据&参数
4.前后端并行开发(无强依赖,可前后端并行开发,如果需求变更,只要接口&参数不变,就不用两边都修改代码,开发效率高)
5.前后端集成
6.前端页面调整
7.集成成功
8.交付
请求方式

以前老的方式是:
1.客户端请求
2.服务端的servlet或controller接收请求(后端控制路由与渲染页面,整个项目开发的权重大部分在后端)
3.调用service,dao代码完成业务逻辑
4.返回jsp
5.jsp展现一些动态的代码



新的方式是:
1.浏览器发送请求
2.直接到达html页面(前端控制路由与渲染页面,整个项目开发的权重前移)
3.html页面负责调用服务端接口产生数据(通过ajax等等,后台返回json格式数据,json数据格式因为简洁高效而取代xml)
4.填充html,展现动态效果,在页面上进行解析并操作DOM。
(有兴趣的童鞋可以访问一下阿里巴巴等大型网站,然后按一下F12,监控一下你刷新一次页面,他的http是怎么玩的,大多数都是单独请求后台数据,
使用json传输数据,而不是一个大而全的http请求把整个页面包括动+静全部返回过来)

 



以上是关于对java前后端分离的理解的主要内容,如果未能解决你的问题,请参考以下文章

对前后端分离设计模式的理解总结(部分Django描述)

关于前后端分离的理解

前端经典面试题前后端分离(说一说你理解的前后端分离?)

Web 前后端为啥需要分离?

前后端分离方案以及技术选型

怎么理解前后端分离