reveal.js 中的插件系统提供了一种通过模块化组件扩展框架功能的机制。本文档解释了插件架构的工作原理、如何使用内置插件以及如何创建与 reveal.js 演示文稿集成的自定义插件。
有关特定内置插件的信息,请参阅其专用页面: Markdown 插件、语法高亮插件、演讲者备注插件、数学插件、搜索插件。
reveal.js 插件系统遵循模块化架构,允许在不修改核心代码的情况下扩展演示文稿功能。它包括一个插件控制器(Plugins 类),该类管理插件的注册、初始化和生命周期。
来源
当 reveal.js 演示文稿加载时,插件会按以下顺序进行初始化:
插件初始化发生在 reveal.js 引导过程的早期,在演示文稿完全渲染之前。插件会接收到 Reveal 实例的引用,从而允许它们扩展其功能。
来源
每个 reveal.js 插件都遵循一种通用结构,通常包含一个工厂函数,该函数返回一个包含特定属性和方法的对象。
| 组件 | 描述 |
|---|---|
id | 插件的唯一标识符 |
init(reveal) | 初始化函数,接收 Reveal 实例 |
| 组件 | 描述 |
|---|---|
| 自定义方法 | 插件公开的附加功能 |
| 事件处理程序 | 响应 reveal.js 事件的函数 |
| DOM 操作 | 修改或增强演示文稿的代码 |
来源
Plugins 控制器在初始化期间处理插件的注册和加载。插件在配置中指定,并在演示文稿开始之前加载。
当调用 initialize 方法时,会发生以下情况:
init 方法都会使用 Reveal 实例被调用来源
Markdown 插件是插件如何扩展 reveal.js 功能的一个绝佳示例。它负责解析演示文稿中的 markdown 内容和加载外部 markdown 文件。
Markdown 插件演示了几个重要的插件模式:
来源
自定义插件遵循与内置插件相同的结构。以下是创建自定义插件的模板:
使用自定义插件
来源
插件通过几个关键 API 与 reveal.js 进行交互
插件可以使用 reveal.getConfig() 访问 Reveal 配置。
插件可以访问演示文稿的 DOM 元素:
reveal.getRevealElement():获取主 reveal 容器reveal.getSlidesElement():获取幻灯片容器插件可以订阅演示文稿事件:
reveal.on(eventName, callback):订阅事件reveal.off(eventName, callback):取消订阅事件插件可以访问和控制演示文稿状态:
reveal.getCurrentSlide():获取活动幻灯片reveal.getIndices():获取当前幻灯片索引reveal.slide(h, v):导航到特定幻灯片| 事件 | 描述 |
|---|---|
ready | 演示文稿完全加载时触发 |
slidechanged | 活动幻灯片更改时触发 |
fragmentshown | 片段显示时触发 |
fragmenthidden | 片段隐藏时触发 |
overviewshown | 启用概览模式时触发 |
overviewhidden | 禁用概览模式时触发 |
paused | 演示文稿暂停时触发 |
resumed | 恢复演示文稿时触发 |
来源
在为 reveal.js 创建插件时,请考虑以下最佳实践:
遵循插件模式:使用标准的插件结构,包括一个返回具有 id 和 init 方法的对象的工厂函数。
对初始化使用 Promises:从 init 方法返回 Promise,以正确排序插件加载。
清理资源:在演示文稿被销毁的情况下实现适当的清理,例如移除事件监听器。
隔离插件状态:保持插件状态和 DOM 元素隔离,以防止与其他插件发生冲突。
利用配置:允许通过 Reveal 配置对象进行自定义。
使用事件系统:依赖 Reveal 的事件系统,而不是直接操作内部状态。
DOM 操作:在将元素添加到 DOM 时,请确保它们不会意外影响演示文稿布局。
插件依赖项:清楚地记录您的插件所需的任何依赖项。
Reveal.js 包含多个内置插件,可扩展其核心功能。
| 插件 | ID | 描述 |
|---|---|---|
| Markdown | markdown | 处理幻灯片中的 markdown 内容 |
| Highlight | highlight | 使用 highlight.js 为代码块提供语法高亮 |
| 备注 | notes | 添加演讲者备注功能 |
| 数学 | math | 使用 MathJax 渲染数学符号 |
| 搜索 | search | 为幻灯片内容添加搜索功能 |
| Zoom | zoom | 允许缩放幻灯片内容 |
| MultipleX | multiplex | 同步多个演示文稿 |
每个内置插件都记录在其自己的专用 wiki 页面中。
来源
插件系统是 reveal.js 的核心优势,它支持广泛的定制和扩展。通过遵循本文档中概述的插件架构和最佳实践,您可以为您的演示文稿创建强大的增强功能。
要创建自定义插件,请参考 创建自定义插件 以获取更详细的指导。