PocketBase 是一个用 Go 编写的开源后端框架,主要特性包括:
- 内嵌数据库(使用 SQLite),支持 实时订阅
- 内置的 文件和用户管理
- 方便使用的 管理后台界面(Admin dashboard UI)
- 简洁易用的 类 REST API 接口
📚 文档和使用示例请访问:https://pocketbase.io/docs
⚠️ 注意事项 PocketBase 当前仍处于积极开发中,在发布 v1.0.0 之前不保证向后兼容性。
API SDK 客户端
使用官方提供的 SDK 客户端是与 PocketBase Web API 交互的最简单方式:
- JavaScript - pocketbase/js-sdk(适用于 Browser、Node.js、React Native)
- Dart - pocketbase/dart-sdk(适用于 Web、移动端、桌面端、命令行)
你也可以参考 https://pocketbase.io/docs/how-to-use/ 上的推荐做法。
使用概览
作为独立应用运行
你可以从 Releases 页面 下载对应平台的预编译可执行文件。下载后解压,并在解压目录下运行:
./pocketbase serve
这些预编译可执行文件基于 examples/base/main.go 文件构建,并默认启用了 JavaScript 虚拟机插件,支持用 JavaScript 扩展 PocketBase(详见 使用 JavaScript 扩展)。
作为 Go 框架或工具包使用
PocketBase 也可以作为一个普通的 Go 库包使用,支持你自定义业务逻辑,最终仍然构建为一个可移植的单一可执行文件。
以下是一个最小的示例:
安装 Go 1.23 以上版本(如果你还没安装的话)
创建一个项目文件夹,并在其中添加
main.go文件,内容如下:
package mainimport ("log""github.com/pocketbase/pocketbase""github.com/pocketbase/pocketbase/core")func main() {app := pocketbase.New()app.OnServe().BindFunc(func(se *core.ServeEvent) error {// 注册一个新的路由:GET /hellose.Router.GET("/hello", func(re *core.RequestEvent) error {return re.String(200, "Hello world!")})return se.Next()})if err := app.Start(); err != nil {log.Fatal(err)}}
- 初始化依赖:
go mod init myapp && go mod tidy
- 启动应用:
go run main.go serve
- 构建静态链接的可执行文件:
CGO_ENABLED=0 go build./myapp serve
📖 更多内容详见 使用 Go 扩展。
构建和运行仓库中的 main.go 示例
如果你希望像官方发布的预编译版本一样,构建一个最小化的独立可执行文件,可以这样做:
- 安装 Go 1.23+
- 克隆或下载 PocketBase 仓库
- 进入目录
examples/base - 运行以下命令构建(参考 Go 的交叉编译环境变量):
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build
- 运行生成的可执行文件:
./base serve
当前纯 Go 实现的 SQLite 驱动支持的构建目标平台包括:
darwin amd64darwin arm64freebsd amd64freebsd arm64linux 386linux amd64linux armlinux arm64linux ppc64lelinux riscv64linux s390xwindows amd64windows arm64
