目前主流的开发模式,就两种:前后端分离 和 前后端不分离
前后端不分离
- 这种模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。
- 这种应用模式比较适合 纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不再适用于前端App应用,为了对接App后端还需再开发一套接口。
请求的数据交互如下图:
flask框架应用模板开发就是前后端不分离开发模式
特点
- http请求次数少
- 只需要一个后台服务器
- 前后端开发耦合,责任不明确
- 单纯开发网站,效率非常高
- 响应的往往是html的页面
- 分工
- 前端:负责写html、css、js
- 后端:需要控制数据的展示,负责渲染页面或重定向
- 实现方案:访问页面后,后端根据路由进行匹配视图函数,通过render等返回页面和数据,如:return render(request,'home.html',res)渲染页面。
前后端分离
含义:前后端开发约定好接口文档(url、参数、数据类型等),独立开发,前端可mock数据进行测试,最后前后端集成,实现了前后端应用的解耦合。
- 在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果。至于前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App有App的处理方式,但无论哪种前端,所需的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。
- 在前后端分离的应用模式中 ,前端与后端的耦合度相对较低。
- 在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。
对应的数据交互如下图 :
特点:
- 有静态文件服务器、后台的应用服务器
- 后台服务器只提供的接口的服务
- 前后端责任分工明确
- 一个后台即可满足网站、app、小程序等多种应用的需要
- 响应的往往是json的数据
- 分工:
- 前端:负责数据展示和用户交互
- 后端:负责提供数据处理接口
- 实现方案:
- 一般基于vue.js框架来编写前端页面,需要通过ajax形式向后端发送请求获取接口数据。后端接收到请求后,执行视图函数,将数据以json格式返回给前端。前端接收到数据后,渲染到页面。
前后端分离的优点:
-
彻底解放前端:前端不再需要向后台提供模板或是后台在前端html中嵌入后台代码
-
前后端可同时开发,完全独立,提升效率:前后端分离的工作流程可以使前端只关注前端的事,后台只关心后台的活,两者开发可以同时进行,在后台还没有时间提供接口的时候,前端可以先将数据写死或者调用本地的json文件即可,页面的增加和路由的修改也不必再去麻烦后台,开发更加灵活。
-
json数据格式拓展性强
-
局部性能提升:通过前端路由的配置,我们可以实现页面的按需加载,无需一开始加载首页便加载网站的所有的资源,服务器也不再需要解析前端页面,在页面交互及用户体验上有所提升。
-
降低维护成本:通过MVC框架,我们可以非常快速的定位及发现问题的所在,客户端的问题不再需要后台人员参与及调试,代码重构及可维护性增强。