• BFF (Back-end for Front-end 服务于前端的后端)


    前端开发模式的演进

    • 后端渲染页面: 后端基于模板,结合具体的请求,生成对应的 html 文件给浏览器执行
    • 前后端的分离: 后端不再写 HTML,只提供 API 接口返回数据给前端,前端通过 JavaScript 负责界面的渲染和交互,通过 AJAX 异步地和后端交互数据
    • 前端的工程化: 前端不再是开发一个个页面,而是开发一个个组件,并且实现开发的模块化,组件化,规范化,出现了如 Node.js,React,Angular,Vue,AMD,CommonJS,ES6,Webpack 等技术
    • 后端的微服务: 后端微服务化后,不再是一个单独服务针对前端提供细粒度的接口,而是由多个微服务提供粗粒度的接口,让前端自己筛选数据

    后端微服务化后,前端如何从后端获取数据呢

    • 通过 CORS 跨域访问多个微服务,获取数据后前端自己裁剪组合
    • 通过统一的 API Gateway 访问,由 API Gateway 将请求分发给各个微服务,获取数据后前端自己裁剪组合
    • 加一个中间层 BFF (Back-end for Front-end 服务于前端的后端),BFF 的接口设计是专门针对前端设计的,在接受前端的请求后,向各个微服务请求数据,然后组合裁剪,然后将结果返回给前端,前端就可以直接使用

    BFF 的优点

    • 前后端彻底分离,后端的变化不影响前端,前端的变化也不影响后端,都由 BFF 去适配就可以
    • 通常 BFF 由前端团队自己开发,团队更容易使 BFF 接口设计适配前端业务,前端测试也更容易,而以往前后端团队的沟通协作都是很大的成本
    • 后端的功能更明确,更独立,就是提供某种粗粒度的数据即可

    BFF 的缺点

    • 多一个中间层增加延迟
    • 前端增加开发成本,以往只要开发前端即可,现在还要考虑后端的 BFF,要考虑 BFF 的高并发,负载均衡,认证等内容

  • 相关阅读:
    js页面滚动定位
    函数定义
    __proto__和prototype
    数组操作
    mysql中 group_concat函数在oracle中使用
    字符串里有字典转列表
    处理 Unicode转汉字编码问题
    Key没有引号的K-V格式字符串,怎么转换成Json/dict
    httpx
    appium +夜神模拟器
  • 原文地址:https://www.cnblogs.com/moonlight-lin/p/14165046.html
Copyright © 2020-2023  润新知