核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互。


在互联网架构中,

web服务器:一般指像nginx,apache这类的服务器,他们一般只能解析静态资源。

应用服务器:一般指像tomcat,jetty,resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好。


一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。

正常的互联网架构,是都要拆开的,你的web服务器集群,你的应用服务器集群+文件服务器集群+数据库服务器集群+消息队列集群+缓存集群等等。


开发模式


以前老的方式是:

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。



总结


前后端分离并非仅仅只是一种开发模式,而是一种架构模式(前后端分离架构)。

千万不要以为只有在撸代码的时候把前端和后端分开就是前后端分离了。需要区分前后端项目

前端项目与后端项目是两个项目,放在两个不同的服务器,需要独立部署,两个不同的工程,两个不同的代码库,不同的开发人员

前后端工程师需要约定交互接口,实现并行开发,开发结束后需要进行独立部署,前端通过ajax来调用http请求调用后端的restful api。

前端只需要关注页面的样式与动态数据的解析&渲染,而后端专注于具体业务逻辑。