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 main
import (
"log"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/core"
)
func main() {
app := pocketbase.New()
app.OnServe().BindFunc(func(se *core.ServeEvent) error {
// 注册一个新的路由:GET /hello
se.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 amd64
darwin arm64
freebsd amd64
freebsd arm64
linux 386
linux amd64
linux arm
linux arm64
linux ppc64le
linux riscv64
linux s390x
windows amd64
windows arm64