在开发中,前端希望根据 UI 来划分接口,这样用户体验好,前端实现也容易。后端希望根据业务模块划分接口,这样有利于服务下沉和解耦。前端和后端间可能会有的对话:
后端: 你多调几个接口不就行了么~
前端: 多好几个 HTTP 请求呢。包成一个接口有这么难么?
前端同学和后端同学都有各的道理。如果前后端都不肯让步,怎么办?
BFF 能解决这种问题。
BFF 介绍
BFF 是 Backend For Frontend(服务于前端的后端)的简称。BFF 就是后台服务与前端间加一适配层:提供对前端友好的接口。BFF 做的具体的事包括:
- 聚合后端服务。将多个接口聚合成一个,提升前端性能。
- 数据裁剪。只返回不同端需要的数据,不返回多余数据。BFF 只需支持 GraphQL 即可支持返回前端需要的数据形状。
- 数据格式化。
BFF 代码谁来开发呢?遵循服务自治,谁使用谁开发的原则,是前端~
BFF 能降低前后端的沟通成本。前端在写 BFF 的过程中,会调后端的服务,就越来越懂业务了。同时,前端离全栈又进了一步~
用 BFF,和后端做朋友~