对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请求把整个页面包括动+静全部返回过来)
面朝大海```春暖花开