Supabase 在推上被奉为独立开发者神器,说是非常好用容易出 demo。我对它做了一些简单的了解。
Database
Database 是 Supabase 最核心的能力,其他的功能都是围绕它设计的。它提供了 Postgres 数据库以及之上的一系列高级功能,比如:
- 提供了在网页控制台中操作表数据、执行 SQL 的能力
- 提供了一套 Data API 服务,用户可以用 REST 或 GraphQL 协议来操作数据
- 提供了一套 client 库,提供了方便的 API 用来调用 Data API
这套设计是为了让开发者无需自己实现后端服务,可以直接使用 Supabase 作为应用服务器,直接写前端或客户端即可。如果你想自己写后端,也可以直连 DB。它即是一个开箱即用的应用服务器,又是一个全功能的 PG 数据库。
Auth
Auth 是 Supabase 的第二个核心功能。它提供了非常完善的各种认证流程,除了基础的账号密码登陆,还支持通过邮件链接登陆、手机验证码登陆和近 20 种第三方登陆。
Auth 服务的源码是 开源 的,fork 自 Netlify 的 gotrue 。你可以自己搭建,也可以用 Supabase 提供的服务。
Supabase 原先有维护一个 React 库 Auth UI ,后面没有精力维护了,交给了社区。现在项目并不活跃。
批评
网络上也有一些批评的声音,比如这篇 I cannot fully recommend Supabase (yet) 。主要的问题是:
- Supabase 虽然提供了在本地部署它各组件的能力,方便你开发测试;但是这个本地版本的行为跟在线版本不完全一致,导致测试好的功能发布线上后不太正常
- CLI 和类型生成功能不太稳定
- Client 不支持数据库事务
- 公司更看重推出新功能,而不是把已有问题修好整固;且新功能常常只能适用于很窄的场景,一旦逻辑稍复杂就无法支持