什么是前后端分离?
- 过去,前后端分离是从物理上做区分的:认为只要是客户端的就是前端,服务器端的就是后端;
- 当前,前后端分离从职责上进行划分:前端负责 View 和 Controller 层,后端只负责 Model 层;
MVC模式
缺点:
- 前后端代码混杂在一起,前端开发重度依赖后端的开发环境,且部署成本大;
- 前后端职责不够明确,Controller仍处于灰色地带,页面路由等功能本该由前端决定,由于Controller与Model有交互,且代码混在一起,导致很多情况下由后端实现;
- 前端静态资源和动态资源没有分离;
Ajax模式
优点:
- 前后端分离,职责明确、部署容易;
- 前端静态资源和动态资源分离,通过CDN提升性能;
缺点:
- 代码不能复用。比如后端依旧需要对数据做各种校验,校验逻辑无法复用浏览器端的代码。如果可以复用,那么后端的数据校验可以相对简单化。
- 性能并非最佳。所有的代码都在浏览器内执行,容易存在性能瓶颈,特别是移动互联网环境下。
Node.js模式
- 浏览器负责展现交互逻辑。通过 CSS 渲染样式,通过 JavaScript 添加交互功能,HTML 的生成也可以放在这层,具体看应用场景。
- Node.js负责路由、模板、数据获取、cookie 等功能;
参考:
- https://github.com/lifesinger/blog/issues/184;
- http://taobaofed.org/blog/2014/04/05/practice-of-separation-of-front-end-from-back-end/;