跳转到主文档

Serverless 开发范式

之前的章节中,我们用来渲染联系人列表的数据,都来自代码中的 Mock 数据。

本章节中,我们将介绍如何通过 BFF 获取数据。

在这之前,我们先回顾下上一章节 Demo 中的联系人列表应用,它有多种运行方式,比如:

  • pnpm run dev:esm - 在本地开发环境中用于 Unbundled 调试
  • pnpm run build && pnpm run start - 在任何环境中等价的正式运行

无论哪种方式,整个应用在运行时(runtime)都是一个【 Universal App 】,既有客户端部分(在客户端运行的 App 代码和框架代码),也有服务器端部分(框架内置的 Static Web Server 或 SSR Server,在 SSR 环节运行的 App 代码和框架代码)。

但开发者对服务器几乎是无感知的,开发环节并没有专门写 server 代码,运行和部署的时候,也不跟具体 server 打交道,不需要运维 server,开发者可以专注于产品本身。

这种开发范式,我们称作 Serverless Web Development。

其中的 SSR 技术,我们称作 Serverless SSR,实现了 SSR 在开发、运行、部署全流程中的 Serverless。

从本节开始,我们要接触 Serverless Web Development 的另一部分:Serverless BFF,跟 SSR 一样,能实现 BFF(Backends for Frontends)在开发、运行、部署全流程中的 Serverless。

我们这里说的 BFF,不是指任意的面向客户端程序的服务器端 API,而是是更纯粹、狭义的 BFF,指专门服务特定客户端程序、特定产品 UI 需求的服务器端 API。

这种 API 更适合跟客户端代码在一起实现、调试、运行和部署,由同一个/批开发者负责。

简单情况下这种 API 做的是对更底层 API(比如各种微服务)的聚合、映射、裁剪、代理等,复杂情况下也会访问数据存储(比如应用数据库、缓存等),有服务器端 Model 等业务逻辑分层,但都倾向于只维护很薄的一层服务器端业务逻辑。