一种新的前后端分离实现方案
文章目录
本文是学习 尔达 Erda 在前后端分离系列文章之后的简单整理和总结,方案非原创。
传统的前后端分工和合作方式
- 后端需要先设计和确定好API, 交给前端处理渲染和交互逻辑
- 前端需要关心很重的业务逻辑
- 前后端需要高度的沟通业务,保持协同
存在的问题
- 沟通成本,前端需要很好理解业务,与后端沟通好,但是实际效果并不佳
- 开发依赖,前端高度依赖后端定义好 API。 如果后端未定义好接口,影响前端开发进展
优点
- 前后端分离,降低后端开发工作量。后端能更专注在业务功能实现,不需要关心前端交互
- 通过 Restful API, 能很好地描述前后端操作流程
彻底的前后端分离
Erda 提供了一种新的前后端分离的实现方案,减少前端对业务的理解,把更多的交互渲染和业务逻辑交给后端来实现。
简单来讲,就是大致回归到以前前后端未分离状态。
不全依赖 Restful API, 而是前后端约定好一种 组件渲染协议。请求从前端过来后,后端处理,然后以表单形式返回给前端,前端只关心组件功能,根据协议对表单内容渲染,不处理业务。
优点
这种新的前后端分离方式,最大的优点在于很好地解决了目前在前后端开发人力不均衡的现状(前端一直是相对稀缺),减轻前端的开发压力和对业务的理解成本。 同时通过 渲染协议,后端把控前端业务逻辑,不再有沟通不足导致项目理解不一致问题
缺点
缺点也是相对明显的:
- 后端开发工作量增大,后端需要关注前端交互逻辑。
- 不直接依赖 Restful API, 业务方对接口数据的处理会复杂些
总结
其实整个方案下来,可以看到这两者更多地是一种相对的过程,通过 渲染协议的约束,释放了前端资源,但是这种方案是将前端压力给到后端开发,而且仅仅只靠协议约束是不够的。
可以看到最后 Erda 在落地该方案的时候,没有完全抛弃通过 Restful API 进行前后端交互,因为这会带来一定的困难,而是各取这两个方案的优点,在实现上更好地帮助业务。
整个方案下来,让人耳目一新有两个概念:
- 彻底的前后端分离:前端只关注前端组件渲染,不需要处理业务逻辑,后端负责所有逻辑,更好帮助业务实现
- 组件渲染协议:Restful API 的一个可替代方案,通过协议约定,前端不需要理解逻辑
另外,一开始是被标题吸引阅读文章,但其实题目没有提炼本文内容,并没有提及 Go 怎么实现前端功能, 有点噱头。不过提出的问题和解决思路值得大家一起借鉴和学习。