Capsule 是一款免费的开源应用,任何人都可以使用它构建 Web 工具,并将其打包成单个 .capsule 文件,其中包含用户界面、媒体资源和嵌入式 SQLite 数据库。它目前支持 macOS 12 Monterey 及更高版本、Windows 10 及更高版本,以及包括 Ubuntu、Debian 和 Fedora 在内的 Linux 发行版,同时提供基于浏览器的预览模式,原生 iOS 和 Android 支持即将推出。
.capsule 文件是一个自包含的包。打开后,应用在由严格的内容安全策略(Content Security Policy)管控的隔离 webview 中运行,该策略会阻止对本地文件系统和未授权网络连接的访问。用户界面使用标准的 HTML、CSS 和 JavaScript 编写,所有数据都存储在同一文件内的标准 SQLite 表中。这意味着接收方可以在任何受支持的平台上打开共享的 .capsule 文件,无需安装额外软件——只需双击该文件,即可启动应用并保持数据完整。
由于所有内容都位于一个文件中,Capsule 应用可以像发送文档一样共享:通过 AirDrop、电子邮件或即时通讯应用。当多个人通过 Dropbox 或 iCloud 等云服务编辑 .capsule 文件的不同副本时,Capsule 会将写入操作批量处理为原子事务,以保持文件完整,并提供三向合并工具来检查更改并安全地协调差异。
Capsule 并非本地 Web 应用存储的唯一方案。Origin Private File System(OPFS)是一种浏览器 API,可在网页的源(origin)内提供私有的高性能文件访问。与 Capsule 的打包文件方式不同,OPFS 允许 Web 应用直接在浏览器的私有存储中读写文件,而无需将其打包成独立文件。它比 File System Access API 更快,因为它避免了后者所需的安全检查和权限提示,并且提供可在 web worker 内运行的同步调用,不会阻塞主线程。OPFS 受浏览器存储配额限制,清除站点数据会删除 OPFS 中的内容。
Capsule 的打包方式使应用易于共享且完全支持离线使用,但也意味着每次状态更改都需要重新分发整个文件。像 OPFS 这样的浏览器原生存储 API 通过在设备上保持状态持久化来避免这种摩擦,但它们缺乏 Capsule 的可移植性和沙箱执行模型。两种方法适用于不同的用例,选择取决于优先考虑的是类似文档的共享还是持久的本地状态。
Capsule 是免费且开源的。桌面版本适用于 macOS、Windows 和 Linux。基于浏览器的 Web 版本允许快速预览,但无法在本地打开或保存文件。原生 iOS 和 Android 支持即将推出。
