探讨|前后端分离开发思路的探讨


cnblogs.com/shanrengo/p/6397734.html
前言:分离模式 对前后端分离研究了一段时间 , 恰逢公司有一个大项目决定尝试使用前后端分离模式进行 , 便参与其中 。 该项目从2016年初立项至今 , 平平稳稳得度过 , 但也涌现出越来越多的问题 , 绝对不是说前后端分离模式不好 , 而是很多公司在尝试前后端分离的时候没有做好充分得准备 。
网上对前后端分离介绍的文章已经屡见不鲜 , 接下来本人用一点粗浅的言语也谈谈这块 , 献丑了 。
为什么要分离? 如果只问“前后端分离的意义大么?”这是废话 , 因为从软件架构的角度 Web 的前后端从一开始不就一直是分离的么 , 而且 browser、server 可能将永远分离下去 。
为了了解这个问题 , 我们有必要先了解一下 Web的研发模式演变 , 关于这个题材 , 下面这篇博文说得不错 , 这边就不做搬运工了 。
https://github.com/lifesinger/blog/issues/184
我们不能“为了分离而分离” , 而应该“为了真正理解web开发、为了更好完成需求而分离” 。
【探讨|前后端分离开发思路的探讨】前后端分离的误区? 1、前端人员配备是否充足?
由于所在公司以往项目采用传统开发风格 , 即以后端MVC为主的开发模式 , 前端人员仅仅提供静态html页面 , 其余工作皆由后端开发人员完成 。 采用前后端分离模式可以减后台负担 , 加快研发效率 , 当然 , 前提是前端能做好的话 。
以往只需要提供静态页面的前端人员 , 在前后端分离模式中要负责项目的view+controller部分 , 即除了静态页面 , 还需要负责页面的所有交互代码、以及nodejs与视图层以及后端API的交互工作 , 无疑增加了前端人员的学习成本 , 在没有足够知识和人才储备的情况下 , 只能让前端人员加班加点 。 结果是大量前端人员离职(PS:做这么多事 , 工资总得加吧!)
2、前后端职责分配? 很多公司认为采用前后端分离之后 , 前后端只需要通过指定API进行交互即可 , 前端负责页面渲染 , Nodejs负责路由分配 , 后端提供API 。 忽视了大量关键工作 , 职责分配和细节处理没有相应文档规定 , 缓存机制、图片上传下载、数据校验、语言国际化等等并没有出具相应信息 。

另外 , 大量忽视了nodejs层的作用 , 仅仅把nodejs当成一个路由中转 , 这一方面也是对nodejs技术的不熟悉导致的 , 其实nodejs能负责很多事 , 除了复杂业务逻辑处理和数据操作由Java 负责 , 大量工作完全可以在nodejs层处理 。 (PS:还是基础不够导致的!)
3、后端API是否Restful风格? 很多公司采用了前后端分离模式后 , 后端API仍然采用以往的传统风格 , 这是不合理的 , Restful风格的API应该是前后端分离的最佳实践 。
ResultFul推荐每个URL能操作具体的资源,而且能准确描述服务器对资源的处理动作 , 通常服务器对资源支持get/post/put/delete/等 , 用来实现资源的增删改查 。
前后端分离的话 , 这些api-url是对接的桥梁 , 采用resultFul接口地址含义才更清晰、见名知意 。 (PS:用了Spring4.x 竟然还不用rest风格 , 说不过去啊)
4、前后端协作模式? 前后端分离后 , 无论是API接口的对接还是测试工作 , 都涉及到前后端人员的沟通 , 很多公司采用前后端分离后 , 前后端协作模式配合力度底 , 互相等待 , 开发效率低下 , 反而不如传统的开发模式 。
例如:当后端 API 没有编写完成时 , 前端无法进行调试 , 这就导致了前端会被后端阻塞的情况 。 其实像这种互相等待的模式需要改进 ,Mock Server 可能可以解决一些问题 。
如何前后端分离?
怎么做前后端分离?大方向就是