Android,iOS的移动应用app本来就是前后端彻底分离的,但是web app有必要前端端分离吗?前后端分离的意义是什么?有什么弊端?知乎上也有对这个问题的讨论https://www.zhihu.com/question/28207685,下面是我个人的一些思考。
一,前后端分离的好处
有一篇博客对前端分离的优势与意义总结的很好http://www.cnblogs.com/luozhihao/p/5761515.html
- 彻底解放前端。
- 提高工作效率,分工更加明确。
- 局部性能提升。
- 降低维护成本。
二,前后端分离存在的问题
为什么不直接全栈?
不能否认,如果开发人员是一群精通前后端的牛人当然是最好的。但是实际开发中,普遍的还是熟悉一端的人为多,如果全栈开发并不能作为一个通用的方案。那为什么不让后端人员学习前端开发,让前端人员学习后端开发呢?首先,每个人的时间和精力都是有限的,技术上的专研要有侧重点,除非是大神,普通人很难面面俱到。前端50分后端50分的两个开发人员最后只能开发出一个50分的应用,一个前端80分后端10分的开发人员和一个前端10分后端80分的开发人员却可以开发出一个80分的应用。前端分离,可以专人做专事,让每个人发挥最大的长处。数据通过异步获取,不利于seo
对于类似博客这种展示类的应用可以页面静态化,或者通过其它一些手段优化seo,例如引入nodejs。是不是非得前后端分离不可?
具体情况要具体分析,前后端分离是一种推荐的做法,但是如果遇到了前后端分离不好解决的问题,可以不分离,如缺少前端开发人员,或者前端界面逻辑比较复杂,后端渲染更容易实现,或者整体前后端分离部分特殊页面后端渲染相结合。但是要保持警惕,防止当项目越做越大,对前端界面显示的需求越来越大时,后端很难掌控前端的交互显示,前端人员又很难接手之前后端人员写的后端渲染页面。
三,前后端联调的沟通问题
不管前后端分不分离,前后端的联调都是一个需要解决的问题,小团队还好,大公司前后端联调可能要跨部门协作,十分拖效率。
我个人的想法是,不管是否是大公司,都可以以小团队的形式进行开发。例如某个版本的开发人员是相对固定的,那些这版本的策划,前端和后端人员可以把工位调在一起,这样隔壁桌或者走几步就能直接面对面进行沟通,这种沟通方式的最高效直接方便的。
四,扩展阅读
淘宝对前后端分离的实践
http://blog.jobbole.com/65513/
http://blog.jobbole.com/65534/