菜单

插件系统

相关源文件

reveal.js 中的插件系统提供了一种通过模块化组件扩展框架功能的机制。本文档解释了插件架构的工作原理、如何使用内置插件以及如何创建与 reveal.js 演示文稿集成的自定义插件。

有关特定内置插件的信息,请参阅其专用页面: Markdown 插件语法高亮插件演讲者备注插件数学插件搜索插件

插件架构概述

reveal.js 插件系统遵循模块化架构,允许在不修改核心代码的情况下扩展演示文稿功能。它包括一个插件控制器(Plugins 类),该类管理插件的注册、初始化和生命周期。

来源

插件初始化流程

当 reveal.js 演示文稿加载时,插件会按以下顺序进行初始化:

插件初始化发生在 reveal.js 引导过程的早期,在演示文稿完全渲染之前。插件会接收到 Reveal 实例的引用,从而允许它们扩展其功能。

来源

插件结构

每个 reveal.js 插件都遵循一种通用结构,通常包含一个工厂函数,该函数返回一个包含特定属性和方法的对象。

必需的插件组件

组件描述
id插件的唯一标识符
init(reveal)初始化函数,接收 Reveal 实例

可选组件

组件描述
自定义方法插件公开的附加功能
事件处理程序响应 reveal.js 事件的函数
DOM 操作修改或增强演示文稿的代码

典型的插件结构

来源

插件注册和加载

Plugins 控制器在初始化期间处理插件的注册和加载。插件在配置中指定,并在演示文稿开始之前加载。

当调用 initialize 方法时,会发生以下情况:

  1. 配置被处理,包括插件列表
  2. Plugins 控制器加载每个插件
  3. 每个插件的 init 方法都会使用 Reveal 实例被调用
  4. 所有插件初始化后,演示文稿开始

来源

示例:Markdown 插件

Markdown 插件是插件如何扩展 reveal.js 功能的一个绝佳示例。它负责解析演示文稿中的 markdown 内容和加载外部 markdown 文件。

Markdown 插件演示了几个重要的插件模式:

  1. 配置集成:从 Reveal 的配置中读取选项
  2. DOM 操作:处理和转换幻灯片内容
  3. 外部库集成:使用 marked 库进行 markdown 解析
  4. 生命周期管理:设置事件监听器和 DOM 观察器

来源

创建自定义插件

自定义插件遵循与内置插件相同的结构。以下是创建自定义插件的模板:

使用自定义插件

来源

插件 API

插件通过几个关键 API 与 reveal.js 进行交互

1. 配置访问

插件可以使用 reveal.getConfig() 访问 Reveal 配置。

2. DOM 访问

插件可以访问演示文稿的 DOM 元素:

  • reveal.getRevealElement():获取主 reveal 容器
  • reveal.getSlidesElement():获取幻灯片容器

3. 事件系统

插件可以订阅演示文稿事件:

  • reveal.on(eventName, callback):订阅事件
  • reveal.off(eventName, callback):取消订阅事件

4. 状态和导航

插件可以访问和控制演示文稿状态:

  • reveal.getCurrentSlide():获取活动幻灯片
  • reveal.getIndices():获取当前幻灯片索引
  • reveal.slide(h, v):导航到特定幻灯片

常用事件

事件描述
ready演示文稿完全加载时触发
slidechanged活动幻灯片更改时触发
fragmentshown片段显示时触发
fragmenthidden片段隐藏时触发
overviewshown启用概览模式时触发
overviewhidden禁用概览模式时触发
paused演示文稿暂停时触发
resumed恢复演示文稿时触发

来源

插件开发的最佳实践

在为 reveal.js 创建插件时,请考虑以下最佳实践:

  1. 遵循插件模式:使用标准的插件结构,包括一个返回具有 idinit 方法的对象的工厂函数。

  2. 对初始化使用 Promises:从 init 方法返回 Promise,以正确排序插件加载。

  3. 清理资源:在演示文稿被销毁的情况下实现适当的清理,例如移除事件监听器。

  4. 隔离插件状态:保持插件状态和 DOM 元素隔离,以防止与其他插件发生冲突。

  5. 利用配置:允许通过 Reveal 配置对象进行自定义。

  6. 使用事件系统:依赖 Reveal 的事件系统,而不是直接操作内部状态。

  7. DOM 操作:在将元素添加到 DOM 时,请确保它们不会意外影响演示文稿布局。

  8. 插件依赖项:清楚地记录您的插件所需的任何依赖项。

内置插件

Reveal.js 包含多个内置插件,可扩展其核心功能。

插件ID描述
Markdownmarkdown处理幻灯片中的 markdown 内容
Highlighthighlight使用 highlight.js 为代码块提供语法高亮
备注notes添加演讲者备注功能
数学math使用 MathJax 渲染数学符号
搜索search为幻灯片内容添加搜索功能
Zoomzoom允许缩放幻灯片内容
MultipleXmultiplex同步多个演示文稿

每个内置插件都记录在其自己的专用 wiki 页面中。

来源

结论

插件系统是 reveal.js 的核心优势,它支持广泛的定制和扩展。通过遵循本文档中概述的插件架构和最佳实践,您可以为您的演示文稿创建强大的增强功能。

要创建自定义插件,请参考 创建自定义插件 以获取更详细的指导。