前后端分离演化史

什么是前后端分离?

  • 过去,前后端分离是从物理上做区分的:认为只要是客户端的就是前端,服务器端的就是后端;
  • 当前,前后端分离从职责上进行划分:前端负责 View 和 Controller 层,后端只负责 Model 层;
    前后端分离演化史

MVC模式

前后端分离演化史
缺点:

  1. 前后端代码混杂在一起,前端开发重度依赖后端的开发环境,且部署成本大;
  2. 前后端职责不够明确,Controller仍处于灰色地带,页面路由等功能本该由前端决定,由于Controller与Model有交互,且代码混在一起,导致很多情况下由后端实现;
  3. 前端静态资源和动态资源没有分离;

Ajax模式

前后端分离演化史
优点:

  1. 前后端分离,职责明确、部署容易;
  2. 前端静态资源和动态资源分离,通过CDN提升性能;

缺点:

  1. 代码不能复用。比如后端依旧需要对数据做各种校验,校验逻辑无法复用浏览器端的代码。如果可以复用,那么后端的数据校验可以相对简单化。
  2. 性能并非最佳。所有的代码都在浏览器内执行,容易存在性能瓶颈,特别是移动互联网环境下。

Node.js模式

前后端分离演化史

  1. 浏览器负责展现交互逻辑。通过 CSS 渲染样式,通过 JavaScript 添加交互功能,HTML 的生成也可以放在这层,具体看应用场景。
  2. Node.js负责路由、模板、数据获取、cookie 等功能;

参考:

  1. https://github.com/lifesinger/blog/issues/184
  2. http://taobaofed.org/blog/2014/04/05/practice-of-separation-of-front-end-from-back-end/;