Bento: 单HTML文件实现演示文稿全功能

Show HN: Bento - An entire PowerPoint in one HTML file (edit+view+data+collab)

Bento 重新定义了演示文稿的形态,将整个 PowerPoint 体验压缩进一个 HTML 文件中。无需安装软件、无需注册账号,浏览器即是一切。它集成了编辑器、演示器和数据引擎,支持 Markdown 即时排版、实时交互式图表以及平滑的 Morph 动画过渡。文件即软件,所有资源内嵌,随时保存,十年后依然可完美打开。

文件即软件:一个 HTML 文件,集演示文稿、查看器和编辑器于一身。
  1. starfallg

    大家好,我是 Bento 的创作者。想补充一些 Github 上没提到的开发细节。

    这个文件主要包含两部分。文件顶部有一块纯 JSON 数据,即幻灯片内容。你可以直接读取、grep 搜索,或者用测试框架对接它。应用程序本身是一个 base64 编码的大二进制对象(blob),通过一个小 shim 加载,并在浏览器中使用 DecompressionStream 进行解压。这样做既保持了包体积小巧,又无需在运行时获取任何外部文件。文件写入回原文件使用了 File System Access API,如果该 API 不可用,则降级为下载文件(plian download),且所有更新都经过 ECDSA 签名。

    我最初是以 reveal.js 为基础,并整合了 GSAP/Flip 来处理动画。后来我尝试用 echarts 添加图表功能,但由于体积和运行机制上的诸多问题,最终我选择重新实现了这两部分。

    最让我满意的是 CRDT 的无缝体验。盲中继(blind relay)是一个运行在 Cloudflare Durable Objects 上的小文件,它只看到客户端发来的加密数据。协作功能默认关闭,直到我们在应用中开启(通过分享邀请文件启动会话),此时会生成一组密钥。访问控制由用户密钥管理,你可以设置只读用户,也可以随时撤销特定用户的实时协作权限。

  2. praveer13

    太棒了。我也认为这种情况会越来越普遍。我觉得有很多软件完全可以本地通过 html/typescript/react 等直接提供,甚至拥有本地状态。只是直到之前,一直缺乏经济上的驱动力。

    我个人正在使用 kimi k3 开发一套移动端友好的游戏,涵盖从线性代数等数学到量子物理的内容——对神经多样性人群友好,完全本地状态,托管在 github pages 上——旨在激发人们对这些领域的兴趣。由于需要多种不同的专业知识和大量时间,如果没有 LLM 的辅助,这类项目很难在没有经济激励的情况下存在。

    如果有人对这些游戏感兴趣,请告诉我——我计划在发布到 HN 之前自己试玩、改进并修复 bug。

  3. calebm

    太棒了。我一直试图推广这种“单文件 Web 应用”的概念——欢迎将其添加到拟议的 Wikipedia 页面:https://en.wikipedia.org/wiki/Draft:Single_File_Web_Apps

  4. d4rkp4ttern

    太喜欢了。和这里的一些人一样,我也在用代码代理(code-agents)制作 HTML 演示文稿,效果非常好。其他适合不同用途的替代方案有:

    - slidev:基于 markdown 的幻灯片,我经常让代码代理来生成。

    https://github.com/slidevjs/slidev

    - typst 幻灯片看起来也很棒,尤其是处理数学公式时。同样,代码代理也能轻松搞定。

    一个小吐槽:看到标题时,我以为这是一个与 PowerPoint 字面相关的工具,但这里的“PowerPoint”只是被用作“演示文稿”的同义词。考虑到有多少人讨厌 PowerPoint,这真是有点讽刺/不幸。

  5. notpushkin

    > 前往 https://bento.page/guestbook/ 尝试实时留言板,体验共享编辑/协作功能。

    我的 M1 Mac 最后卡死了(不得不强制重启),但这过程太好玩了!我想 Figma 使用 WASM 和自定义渲染器是有原因的,不过我想你的实现对于大多数情况应该都没问题(除非所有 HN 用户同时试图编辑所有内容 :^)。

    两点建议:

    1. 如果另一个人修改了与我当前操作无关的内容,最好不要重置我的焦点。

    2. 落地页和示例演示文稿中的文案太像 LLM 写的了。你的 HN 投稿文案读起来要简单愉快得多。

    另外,非常感谢将其作为 FOSS 开源!

  6. georgeburdell

    嗨,只是想说说,我觉得这填补了企业界一个极其常见的需求空白。我公司里有几个团队已经切换到某种 fancy html/javascript 方案,不再使用云端或桌面的现成演示/可视化软件,因为他们受够了 bug 迟迟不修复或自定义功能无法添加的问题。

    各地的内部 IT 领地主义者们应该感到非常害怕。

  7. bryanhogan

    很酷的项目。我之前也用过基于 markdown 的幻灯片工具来处理类似场景:

    - Marp: https://marp.app/

    - Slidev: https://sli.dev/

    - Revealjs: https://revealjs.com/

    还有一个更相似的方案,基于 HTML 和 CSS,但使用的是 Svelte 框架,叫 Animation: https://animotion.pages.dev/

    它专注于包含动画的演示,当然也很灵活。

  8. aag

    多么雄心勃勃且令人印象深刻的项目!我要去试试。

    一点提醒:主页上写着“没有任何数据回传”,但我检查过的 Bento 文件中包含一个 cloudflareinsights.com 的信标(beacon)。

同日更多故事

2026-07-22