2022年 11月 8日

python 前后端分离

1. 前后端分离

1.1 什么是前后端分离

前端:即客户端,负责渲染用户显示界面【如web的js动态渲染页面,安卓,iOS,pc客户端等】

后端:即服务端,负责接收HTTP请求,处理数据

API:Application Programming Interface 是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。 在django中就是url。这个url对应的数据,前端需要数据就发送url,后端根据这个url返回结构化数据(如json)。

前后端分离 完整过程

1. 前端通过HTTP请求API
2. 后端以json形式返回前端需要的数据
3. 前端生成用户显示界面【如html,ios,android】
  • 1
  • 2
  • 3

判断前后端分离的核心标准:

谁生成显示页面

1. 后端生成【前后端未分离】例:flask->render_template  django->render(html)
2. 前端生成【前后端分离】
  • 1
  • 2

1.2 前后端分离的优点

  1. 各司其职,更专注于解决一个方向的问题

    前端:视觉层面,兼容性,前端性能优化

    后端:并发,可用性,性能

    并发(大量的请求过来会不会产生资源资源竞争的问题,一个大量的并发问题都在于资源竞争)

  2. 解耦

    前端和后端均易于扩展

  3. 后端灵活搭配各类前端-如安卓等

  4. 提高用户体验

  5. 前端+后端可完全并行开发,加快开发速率

1.3 分离常见问题

问题 答案
如何解决HTTP无状态?(HTTP是无状态协议,不会记住你是否之前访问过这个网站,不使用cookie和session) 采用token(面向计算型的一种方式,去解决状态问题)(无论是客户端还是iOS,android)
如果前端为js,如何解决跨域问题?(ip,端口,协议一项不同就是跨域) 采用CORS跨域方案。全称叫跨站资源共享
如何解决csrf问题?(没有cookie) 采用token
Single Page WebApplication(前端非常牛,spa应用,单页面应用,整个过程全拿js做跳转,体验贼好,全是异步刷新)是否会影响Search Engine Optimization(seo搜索引擎优化)效果 会,前后端分离后,往往页面不存在静态文字【如新闻的详细内容】
“老板,这个逻辑到底是上前端做还是后端做啊” (有些功能前后端都可以实现) 底线原则:数据校验需要前后端都做
“老板,前端工作压力太大了啊” 团队协作不能只是嘴上说说
动静分离和前后端分离是一个意思吗? 动静分离指的是:css/js/img这类静态资源跟服务器拆开部署。典型方案:静态资源交由CDN(内容网络分发,就近返回)厂商处理(蓝汛 网宿 阿里CDN)

1.4 具体实现方式

  1. Django/Flask 后端只返回json
  2. 前端-> ex:js向服务器发出ajax请求,获取数据,拿到数据后动态生成html
  3. 前端服务和后端服务 分开部署