什么是PocketBase?
PocketBase是一个一体化后端解决方案,为现代Web或移动应用提供所需的一切功能,无需复杂的基础设施。它包含嵌入式SQLite数据库、实时订阅、文件和用户管理、简洁的管理面板以及REST风格的API。由于它从单个文件运行,你可以将其部署到几乎任何地方,从VPS到本地机器甚至树莓派。
它专为同时追求控制力和简洁性的开发者设计。你无需为身份验证、存储和API端点管理单独的服务器。PocketBase开箱即用地处理所有这些功能。你可以将其用作独立后端,或嵌入到Go应用程序中创建自定义解决方案。
为什么开发者喜爱PocketBase
PocketBase专注于速度和简洁性。你无需安装多个包或服务。下载后,只需一个命令即可启动。然后它会启动基于Web的管理面板。
数据库使用SQLite构建,这意味着数据默认本地存储,但你可以使用扩展将其与现有工作流或云存储连接。
另一个主要优势是其实时能力。数据库中的每个更改都可以通过WebSocket订阅即时广播到连接的客户端。这使其非常适合构建需要即时更新的应用程序,如聊天系统、仪表板和协作工具。
如何安装PocketBase
启动PocketBase只需不到一分钟。你可以从官方发布页面下载预构建的可执行文件。它支持所有主要平台,包括Windows、macOS和Linux。
下载后,解压存档并在终端中导航到该文件夹。运行以下命令:
|
|
此命令启动本地服务器,并在http://127.0.0.1:8090/_/启动管理面板。从那里,你可以创建集合、添加用户、上传文件和管理数据。没有设置向导或依赖安装——一切都包含在单个二进制文件中。
如果你是Go开发者,也可以将PocketBase安装为Go模块,并直接在项目中使用它来构建自定义逻辑或扩展现有API。
将PocketBase用作Go框架
PocketBase可以作为Go框架使用,让你构建自己的后端逻辑,同时将所有内容保存在一个文件中。以下是一个简单示例,展示如何使用自定义路由扩展它。
|
|
文件准备就绪后,运行以下命令:
|
|
你现在将拥有一个工作的后端,同时提供PocketBase仪表板和自定义/hello端点。这使得PocketBase非常灵活,你可以将其用作即用型后端,或作为更复杂Go项目的一部分。
使用JavaScript扩展PocketBase
PocketBase包含一个内置的JavaScript引擎,让你无需修改或重新编译Go代码即可扩展其行为。这使得你可以直接在后端中添加自定义逻辑、验证、自动化和事件驱动的工作流。
你可以在pb_hooks文件夹内创建JavaScript文件,PocketBase将自动加载并运行它们。这些脚本可以监听记录创建、更新、身份验证等事件。
以下是一个简单示例,每当新用户注册时发送欢迎邮件。
在PocketBase目录中创建名为pb_hooks/user_email.js的文件:
|
|
每当在users集合中创建新记录时,此脚本会自动运行。它获取用户的电子邮件,记录它,并使用PocketBase的内置HTTP客户端($http)调用外部电子邮件服务。
你可以使用相同的模式在保存前验证数据、触发webhook、阻止操作或更新相关记录。由于一切都在PocketBase内部运行,你不需要额外的服务器或函数来自动化后端逻辑。
这使得它对不熟悉Go但仍希望向后端添加动态逻辑的团队非常友好。你可以在官方文档的"使用JavaScript扩展"部分找到更多详细信息。
使用SDK与PocketBase交互
为了更轻松地与后端通信,PocketBase为JavaScript和Dart提供官方SDK。JavaScript SDK适用于基于浏览器或Node.js的项目,而Dart SDK则适用于使用Flutter构建的移动应用。两个SDK都提供了连接、验证用户和执行CRUD操作的简便方法,无需手动编写HTTP请求。
例如,在JavaScript中,你可以这样连接和获取数据:
|
|
这种简洁性让你可以专注于构建前端,而PocketBase处理身份验证、数据库操作和实时更新。
使用Sevalla自托管PocketBase
当你准备好超越测试阶段时,PocketBase为你提供两个选项。你可以使用自己的基础设施自托管它,或使用他们在Pocketbase.io上的托管云版本。
自托管让你拥有完全控制权,通常被希望将敏感数据保存在内部的技術团队首选。
你可以选择任何云提供商,如AWS、DigitalOcean等来设置Pocketbase。但我将使用Sevalla。
Sevalla是一个PaaS提供商,专为开发者和开发团队设计,以最高效的方式不断发布功能和更新。它为你的项目提供应用程序托管、数据库、对象存储和静态站点托管。
我使用Sevalla有两个原因:
- 每个平台都会为创建云资源向你收费。Sevalla为我们提供50美元的信用额度,因此在此示例中我们不会产生任何成本。
- Sevalla有一个Umami模板,因此简化了你安装所需每个资源的手动安装和设置。
登录Sevalla并点击Templates。你可以看到PocketBase作为其中一个模板。
点击"PocketBase"模板。你将看到配置应用程序所需的资源。点击"Deploy Template":
你可以看到资源正在配置中。部署完成后,转到PocketBase应用程序并点击"Visit app"。
你将看到404消息。在URL中添加_,你将看到登录仪表板。
要首次登录,你将需要超级用户登录。要创建该用户,请返回应用程序并点击"Logs"。你将看到一个以https://0.0.0.0开头的URL。
将0.0.0.0替换为你的新云URL,并将完整路径复制粘贴到浏览器中。你将看到为PocketBase部署创建超级用户的选项。
创建超级用户后,你可以再次转到/_并使用用户名和密码登录。你现在应该看到PocketBase仪表板。
你现在在云上运行了一个生产级的Pocketbase服务器。你可以使用它来设置数据库表,并使用JavaScript或其他SDK与Pocketbase交互。
安全性和开源性质
PocketBase是开源的,并在MIT许可下发布,这意味着你可以在个人或商业项目中自由使用它。如果你发现错误或安全问题,可以向维护者报告,他们会及时解决。
该项目的透明开发和活跃社区使其成为初创公司、独立开发者和爱好者的可靠选择,他们更喜欢拥有自己的基础设施。
由于它仍在积极开发中,1.0版本之前不保证向后兼容性。但它已经足够稳定,适用于中小型应用程序。
何时使用PocketBase
PocketBase非常适合需要简单后端且维护成本低的项目。它非常适合原型、小型SaaS产品、独立应用、内部工具和教育项目。
无需设置包含PostgreSQL、Node.js和nginx的复杂技术栈,你可以立即启动后端并专注于产品。
如果你的项目后来发展成更大的规模,在这种情况下,你可以迁移到更复杂的设置,或继续使用PocketBase作为特定功能(如身份验证或实时数据同步)的轻量级服务。
结论
PocketBase重新带来了快速开发的乐趣,无需复杂的设置。只需一个可执行文件,你就可以获得一个支持身份验证、实时更新、文件上传和管理面板的后端。它是开源、快速且可定制的,使其成为希望快速行动而不放弃控制的开发者的绝佳选择。
无论你是在构建个人应用、初创公司MVP还是内部仪表板,PocketBase都能让你在几分钟内设置完整的后端。你可以从小处着手,根据需要扩展它,并将其部署到任何地方——同时保持工作流程简单高效。