携程基于 GraphQL 的前端 BFF 服务开发实践

作者:

工业聚,携程高级前端开发专家,react-lite, react-imvc, farrow 等开源项目作者。兰迪咚,携程高级前端开发专家,对开发框架及前端性能优化有浓厚兴趣。​

一、前言

过去两三年,携程度假前端团队一直在实践基于 GraphQL/Node.js 的 BFF (Backend for Frontend) 方案,在度假BU多端产品线中广泛落地。最终该方案不仅有效支撑前端团队面向多端开发 BFF 服务的需要,而且逐步承担更多功能,特别在性能优化等方面带来显著优势。

我们观察到有些前端团队曾尝试过基于 GraphQL 开发 BFF 服务,最终宣告失败,退回到传统 RESTful BFF 模式,会认为是 GraphQL 技术自身的问题。

这种情况通常是由于 GraphQL 的落地适配难度导致的,GraphQL 的复杂度容易引起误用。因此,我们期望通过本文分享我们所理解的最佳实践,以及一些常见的反模式,希望能够给大家带来一些启发。

二、GraphQL 技术栈

以下是我们 GraphQL-BFF 项目中所采用的核心技术栈:

graphql

基于 JavaScript 的 GraphQL 实现

koa v2

Node.js Web Framework 框架

apollo-server-koa

适配 koa v2 的 Apollo Server

data-loader

优化 GraphQL Resolver 内发出的请求

graphql-scalars

THE END
Copyright © 2024 亿华云