← 返回博客

reveal.js:主题、导出,以及它与替代方案的对比

reveal.js 是一款开源的 HTML 演示框架,在 GitHub 上斩获 71.9k 星标——你用 HTML 或 Markdown 编写幻灯片,在任意浏览器中演示。这是一份实话实说的指南:主题、模板和示例如何运作,导出 PDF 和 PowerPoint 的真实表现,它与 Slidev 和 Marp 相比如何,以及一个 agent-native 的设计工作空间在何处发挥作用。

reveal.js:主题、导出,以及它与替代方案的对比

如果你写代码,又需要做一场演讲,那你大概率碰到过 reveal.js。你看过的开发者大会幻灯片里,有很大一部分背后就是这个开源框架:你用 HTML 或 Markdown 编写每一页幻灯片,它作为一个网页在任意浏览器里运行——内建主题、转场、片段动画、演讲者备注,以及原生的 PDF 导出。凭借 GitHub 上的 71.9k 星标和 MIT 许可证,它就是"不打开 PowerPoint 怎么做幻灯片"这个问题的默认答案。

这份指南给它画一张实话实说的地图。reveal.js 究竟是什么,主题、模板和示例如何拼到一起,导出 PDF 和 PowerPoint 的真实表现(这里有个坑),它跟其他开源竞争者相比如何,以及——大多数文章都跳过的那部分——这样一个框架在什么时候不再是对的工具、又该由别的东西来接手。如果你正在为一套 AI 与 Agent 辅助的幻灯片工作流权衡选择,那么弄清楚 reveal.js 是什么、不是什么,会很有帮助。

reveal.js 是什么

reveal.js 自称"HTML 演示框架",这个描述很精确。它不是一个你打开后点来点去的应用——它是一个你放进 HTML 文件里的 JavaScript 库。每一页幻灯片都是一个 <section> 元素;把 section 嵌套起来,你就得到了纵向幻灯片。你用 CSS 给一切设定样式,用 data 属性接入转场和片段,然后在浏览器里打开这个页面来演示。因为它的输出本身就是一个网页,凡是 web 能做的——实时代码、内嵌视频、iframe、WebGL、你自己的组件——都能出现在一页幻灯片上。

取舍就写在定义里:这是一个面向开发者的框架,而不是图形界面。你的工具是代码编辑器和浏览器,而不是一块带拖拽手柄的画布。这正是开发者喜欢它的原因——完整的版本控制、完整的 CSS 控制、没有私有文件格式——也正是不会写代码的人会被它劝退的原因。它还是真正免费的:没有账号、没有水印、没有导出上限、没有按席位计费。这份 HTML 归你所有。

主题、模板与示例

围绕 reveal.js 的大多数搜索,其实都是想在不从零设计的前提下让它看起来好看,所以下面讲讲这几块是怎么拼起来的。

reveal.js 主题是内建的起点。框架自带一组现成主题——Black、White、League、Beige、Sky、Night、Serif、Simple、Solarized 等等——你只需改动一个样式表链接就能切换。主题就是 CSS,所以所谓"自定义 reveal.js 主题",意思是写(或 fork)一个 Sass/CSS 文件,去设定你的字体、颜色和标题样式。这里没有主题商店;你是在编辑样式表。

reveal.js 模板和示例大多存在于社区,而不是某个官方陈列馆。仓库自带示例幻灯片,文档站(revealjs.com)本身就是一套你可以查看源码的 reveal.js 幻灯片,GitHub 上更是满是入门模板、脚手架和框架封装。如果你在搜"reveal js examples",信息量最高的就是官方站点自己的源码——它几乎把每个功能都就地演示了一遍。给新手的提醒:这里的"模板"是一个供你克隆并编辑的代码仓库,而不是一个你往里填内容的设计文件。

导出到 PowerPoint 与 PDF

PDF 导出是一等公民、内建功能,而且表现很好。在你幻灯片的 URL 后面加上 ?print-pdf,打开浏览器的打印对话框,选择"另存为 PDF",reveal.js 就会把每一页幻灯片重排到各自的一页上。这是干净、受支持的路径——你拿到的 PDF 看起来和你的幻灯片一模一样。

把 reveal.js 导出到 PowerPoint,则是需要管理预期的地方。并没有一个原生的"另存为 .pptx"能产出可编辑的 PowerPoint 文件。可行的路子是 PDF → PPTX 转换,而这种转换是有损的:每一页幻灯片进到 PowerPoint 里都是一张扁平的图片,而不是可编辑的文本框、形状和版式。所以如果下游有人需要在 PowerPoint 里打开你的幻灯片并编辑它——重打一个标题、给图表换个样式、重排一条要点——reveal.js 给不了他们这个。它天生就是用来从浏览器演示的,它可编辑的源是 HTML,而不是 .pptx。在动手之前就明白这一点,能让你在某天同事跟你要"那份 PowerPoint"时免于一场痛苦的意外。

reveal.js 的替代方案,以及它的对比

把幻灯片当代码来写,reveal.js 并不是唯一的路子。最接近的两个开源替代方案——也就是人们说"reveal.js 替代方案"时所指的——是 SlidevMarp;而且实话说,Open Design 完全处在另一个层面,而不是与它们正面竞争。

工具编写方式可编辑 .pptx模板化许可证
reveal.jsHTML 或 Markdown否(PDF→PPTX 是有损的图片)主题 = CSS/Sass;社区模板MIT
SlidevMarkdown + Vue否(图片/PDF 导出)Vue 组件 + 主题MIT
Marp仅 Markdown否(PDF/PPTX 为图片)Markdown 主题(CSS)MIT
Open Design把它描述给你的 Agent是——对着一套设计系统产出可编辑的成果第一方幻灯片模板Apache-2.0

Slidev 是理念上最接近的兄弟:它以 Markdown 为先,底层配上 Vue 组件,因此它用 reveal.js 那种原始的 HTML 自由度,换来了一套更结构化、对开发者更友好的编写流程。如果你活在 Vue/Vite 的世界里、又想要实时代码演示,Slidev 是自然之选。Marp 则走了另一个方向——用 Markdown、刻意极简、没有组件——这让它在你的幻灯片以文字为主、又完全不想操心框架时成为最快的路径。

这三者都是代码优先的框架,有着相同的根本形态:你写出这套幻灯片,你在浏览器里演示,而可编辑的 PowerPoint 输出并不是重点。在它们之间做选择,主要看你想要哪种编写界面(原始 HTML、Vue 版 Markdown,还是纯 Markdown)——而不是某一个有、其余都缺的能力。

Open Design 的位置

这里说句实在的边界话。reveal.js 要求你去这套幻灯片——每一页,都用代码。如果你想要手工雕琢的 HTML 控制力,这是个优点,而且如果这就是你的目标,这里没有任何东西能取代它。

Open Design 是另一个层面,而且它是我们做的产品,所以请带着这一点来读。它是一个开源(Apache-2.0)、本地优先、自备 key 的 Agent-Native Design Workspace,它位于你已经在用的编程 Agent——Claude Code、Codex 或 Cursor——之外。你不必手写 HTML,而是描述你想要的幻灯片,Agent 就对着一套设计系统生成一份可编辑的,于是它产出时就符合品牌调性,并且保持可编辑,而不是被冻结成一份已渲染的成品。Open Design 还提供了你可以直接上手的第一方幻灯片模板

如果你想要的就是把幻灯片当代码来写、并拥有完整的 CSS 控制,那么它不是 reveal.js 的替代品——那是 reveal.js 的主场,而它做得极好。Open Design 面向的是这样的情形:你宁愿给 Agent 下简报,也不想去写标记;你希望输出能在许多套幻灯片之间都符合同一套设计系统;你希望最后拿到归你所有的可编辑文件。当这套幻灯片就是你正在写的代码时,去用 reveal.js;当这套幻灯片只是一个 Agent 为你产出的许多份符合品牌调性的成果之一时,去找一个工作空间。

常见问题

reveal.js 免费吗?免费。reveal.js 是 MIT 许可证下的开源项目——可免费商用,没有账号、没有水印、没有导出限制。你自行托管这份 HTML。

我怎么添加或更换 reveal.js 主题?reveal.js 自带内建主题(Black、White、League、Sky、Night、Serif 等等),你改动一个样式表链接就能切换。自定义主题意味着写或 fork 一个带有你自己字体和颜色的 CSS/Sass 文件——这里没有可供浏览的主题商店。

我能把 reveal.js 导出成 PowerPoint 吗?导不成可编辑的 .pptx。reveal.js 能干净地导出成 PDF(加上 ?print-pdf,然后从浏览器打印成 PDF)。把那份 PDF 转成 PowerPoint 是可以的,但有损——每一页都落成一张扁平图片,而不是可编辑的文字和形状。如果你需要一份可编辑的 PowerPoint,reveal.js 不是对的源头。

reveal.js、Slidev、Marp——我该用哪个?三者都是开源、代码优先、MIT 许可证。想要原始 HTML 控制选 reveal.js,想要 Markdown 加 Vue 组件(很适合实时演示)选 Slidev,想要最简单的纯 Markdown 幻灯片选 Marp。它们都不以可编辑的 PowerPoint 输出为目标。

用 reveal.js 需要会写代码吗?基本上,需要。reveal.js 是一个面向开发者的框架——你在文本编辑器里跟 HTML、Markdown 和 CSS 打交道,而不是一个拖拽式的图形界面。如果你更想用大白话描述一套幻灯片,那正是像 Open Design 这样的 agent-native 工作空间填补的空白。

结语

reveal.js 配得上它的 71.9k 星标:它是一种免费、MIT 许可证、HTML 原生的方式,能做出在任何有浏览器的地方都能运行的幻灯片,带有真正的主题、干净的 PDF 导出,以及完整的 CSS 控制。只是要看清了再进场——它是一个你在里面写代码的框架,而不是一个你点着走的应用,而且"导出成可编辑的 PowerPoint"并不在它的能力之内。如果你想把幻灯片当代码来写,reveal.js(或 Slidev / Marp)是个很好的归宿。如果你更愿意描述一套幻灯片、让你的 Agent 生成一份可编辑、符合品牌调性、且归你所有的成果,那就该由一个 Agent-Native Design Workspace 来接手了。


← 返回博客 GitHub · 来源 ↗