PocketBase - 单文件开源后端解决方案

本文翻译整理自:https://github.com/pocketbase/pocketbase

文章目录


一、关于 PocketBase

PocketBase 是一个开源的 Go 后端框架,主要功能包括:

  • 嵌入式数据库(SQLite )支持实时订阅
  • 内置文件与用户管理
  • 便捷的管理员仪表盘 UI
  • 简洁的 REST 风格 API

注:请注意 PocketBase 仍处于积极开发阶段,在 v1.0.0 版本发布前不保证完全的向后兼容性。


相关链接资源


关键功能特性

  • 嵌入式 SQLite 数据库
  • 实时数据订阅
  • 用户权限管理系统
  • 文件存储管理
  • 可视化后台管理界面
  • RESTful API 接口

二、API SDK 客户端

推荐使用官方 SDK 客户端与 PocketBase Web API 交互:

更多使用建议请参考 https://pocketbase.io/docs/how-to-use/


三、使用方式


1、作为独立应用使用

可从 发布页面 下载对应平台的预编译可执行文件,解压后执行 ./pocketbase serve 即可运行。

预编译版本基于 examples/base/main.go 文件构建,默认启用了 JS VM 插件支持通过 JavaScript 扩展功能(详见 JavaScript 扩展指南)。


2、作为 Go 框架使用

PocketBase 可作为标准 Go 库使用,方便开发者构建定制化业务逻辑并生成独立可执行文件。


基础示例:

0、安装 Go 1.23+(如未安装)

1、创建项目目录并添加 main.go 文件:

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)
    }
}

2、初始化依赖:go mod init myapp && go mod tidy

3、启动应用:go run main.go serve

4、构建静态可执行文件:CGO_ENABLED=0 go build,然后运行 ./myapp serve

更多细节请参考 Go 扩展指南


3、从源码构建示例

要构建与发布版本相同的可执行文件:

0、安装 Go 1.23+(如未安装)

1、克隆仓库

2、进入 examples/base 目录

3、执行构建命令(示例为 Linux 环境):

sh 复制代码
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build

4、运行生成的可执行文件:./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

四、测试

PocketBase 包含单元测试和集成测试,运行命令:

sh 复制代码
go test ./...

测试指南请参考 http://pocketbase.io/docs/testing


伊织 xAI 2025-04-23(三)

相关推荐
左灯右行的爱情40 分钟前
Redis 缓存并发问题深度解析:击穿、雪崩与穿透防治指南
java·数据库·redis·后端·缓存
南玖yy1 小时前
C++ 成员变量缺省值:引用、const 与自定义类型的初始化规则详解,引用类型和const类型的成员变量自定义类型成员是否可以用缺省值?
c语言·开发语言·c++·后端·架构·c++基础语法
不爱总结的麦穗1 小时前
面试常问!Spring七种事务传播行为一文通关
后端·spring·面试
小虚竹2 小时前
claude 3.7,极为均衡的“全能型战士”大模型,国内直接使用
开发语言·后端·claude·claude3.7
Yharim2 小时前
两个客户端如何通过websocket通信
spring boot·后端·websocket
bcbnb2 小时前
iOS 性能调优实战:三款工具横向对比实测(含 Instruments、KeyMob、Xlog)
后端
极客智谷2 小时前
Spring AI应用系列——基于ARK实现多模态模型应用
人工智能·后端
radient2 小时前
Java/Go双修 - Go并发Goroutine与Java对比
java·后端·go
Cache技术分享2 小时前
63. Java 类和对象 - static 关键字
前端·后端
用户4099322502122 小时前
FastAPI与Tortoise-ORM模型配置及aerich迁移工具
后端·ai编程·trae