跳到主要内容

前后端分离

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

目前产品使用的是 freemaker + springboot ,现在要改为前后端分离的架构需要考虑的问题。

一、优势

  • 解耦,前端 css,js,图片等一系列静态资源,可单独部署前端服务器
  • 分布式架构打下基础,在高并发场景下,可同时水平扩展前后端服务,同时减少后端服务器的并发负载压力(只负责接口的调用请求)
  • 高可用性,后台服务器宕机,前端仍可访问,只是没有数据;
  • 可复用性,易于第三方集成复用
  • 开发人员分离,后端java工程师,前端javascript工程师
  • 前端JS可以做很大部分的数据处理工作,对服务器的压力减小到最小(边缘计算?)

二、劣势

  • 要求前后端开发工程师配合更加密切,要有完备的接口文档机制,文档变的超级重要,管理不慎,可能导致混乱
  • 前端的工作量加重
  • 对前端的技能要求更高,学习成本,培养成本上升
  • 未分离之前,使用CDN静态资源加速,一样可以加快静态资源的访问速度
  • 如果客户端(浏览器)性能很差,由客户端分担的性能压力,会导致用户体验变的更差
  • 产品使用了freemarker模板语言,导致重构代价比较大
  • 产品迭代周期将被拉长,接口定制,产品联调等
  • 二次开发方案,变的更加复杂
  • 国际化、上下文等问题不好处理。