一、为什么要前后端分离?
1.1 现有开发模式的适用场景
比如后端为主的MVC,做一些同步展现的业务效率很高,但是遇到同步异步结合的页面,与后端开发沟通起来就会比较麻烦。
Ajax为主SPA型开发模式,比较适合开发APP类型的场景,但是只适合做APP,因为SEO等问题不好解决,对于很多类型的系统,这种开发方式也过重。
1.2 前后端职责不清
在业务逻辑复杂的系统里,我们最怕维护前后端混杂在一起的代码,因为没有约束,M-V-C每一层都可能出现别的层的代码,日积月累,完全没有维护性可言。
虽然前后端分离没办法完全解决这种问题,但是可以大大缓解。因为从物理层次上保证了你不可能这么做。
1.3 开发效率问题
开发上与后台几乎同步,互相不影响,特别是基于RESTFul API风格,更是减少了沟通的成本。方便各自debug,,java开发人员不需要跑到前端开发人员机器上看tomcat控制台的摄氏,前端开发人员也不需要跑到后台开发人员的机器上看浏览器报错调试。
1.4 对前端发挥的局限
性能优化如果只在前端做空间非常有限,于是我们经常需要后端合作才能碰撞出火花,但由于后端框架限制,我们很难使用Comet、Bigpipe等技术方案来优化性能。
为了解决以上提到的一些问题,我们进行了很多尝试,开发了各种工具,但始终没有太多起色,主要是因为我们只能在后端给我们划分的那一小块空间去发挥。只有真正做到前后端分离,我们才能彻底解决以上问题。
1.5 前端的工作量是否增加了?
相对于只切页面/做demo,肯定是增加了一点,但是当前模式下有联调、沟通环节,这个过程非常花时间,也容易出bug,还很难维护。所以,虽然工作量会增加一点,但是总体开发效率会提升很多。
另外,测试成本可以节省很多。以前开发的接口都是针对表现层的,很难写测试用例。如果做了前后端分离,甚至测试都可以分开,一拨人专门测试接口,一拨人专注测试UI(这部分工作甚至可以用工具代替)。
二、职责划分
前端,专注于: (1)UI层 (2)控只逻辑、渲染逻辑 (3)交互、用户体验
后端,专注于: (1)服务层 (2)数据格式、数据稳定 (3)业务逻辑
三、前后端分离的优点
1. 最大的好处就是前端JS可以做很大部分的数据处理工作,对服务器的压力减小到最小
2. 后台错误不会直接反映到前台,错误提示较为友好
3. 由于后台是很难去探知前台页面的分布情况,而这又是JS的强项,而JS又是无法独立和服务器进行通讯的。所以单单用后台去控制整体页面,又或者只靠JS完成效果,都会难度加大,前后台各尽其职可以最大程度的减少开发难度。4. 前端掌控所有信息的展现、组织以及架构的目的。
5. 有利于人员专业化,提高效率和质量,后端专注于提供数据接口,前后端分离就是让专业的人去做专业的事,我认为最有效率的方式始终是——让每个人发挥他(她)自己最大的潜能。
6. 前端变化远比后端变化频繁,则意义大。
7. 测试数据,可以直接拿来演示,效果更加,项目启动速度更快
8. 该网站前端效果绚丽/跨设备兼容要求高,则意义大。(手机APP原生开发需要ios和android,现在只需要HTML一套)
9. 模板应由前端人员去控制,前端工程师,他们对最终的视觉效果负责,模板的责任人必须也只能是前端工程师。
1) 性能优化(尤其是外部资源的管理与发布,请求合并等等)
2) 协作的顺畅性(已形成模板的界面片段的返工等问题)
在做前后分离时,会需要一些复合人才、以及有一线后端工作经验还熟悉JS的开发者
-
« 上一篇:
input框值改变触发事件写法
-
2015年开源前端框架盘点TOP20
:下一篇 »