创建插件 4.0.0
我们为插件提供一个轻量级的规范和 API。此规范和 API 已被我们的默认插件(比如 代码高亮 和 Markdown)使用,也可以用来创建你自己的插件。
插件定义
插件是包含以下属性的对象。
属性 | 值 |
---|---|
id 字符串 | 插件的唯一标识符。通过 Reveal.getPlugin(<id>) 可使用该标识符检索插件实例。 |
init 函数 | 一个可选函数,在应该运行插件时调用。它用一个参数调用:对已注册插件的 演示实例 的引用。 init 函数选择性地返回 Promise。如果返回 Promise,那么在演示文稿完成初始化并触发 ready 事件 之前,reveal.js 将等待它分辨。 |
destroy 函数 | 一个可选的函数,当此插件注册到的 reveal.js 实例未初始化时,该函数被调用。 |
这里有一个示例插件在按下 T 键时对演示文稿中的所有幻灯片进行洗牌。请注意,我们导出一个函数,该函数返回一个新的插件对象。之所以这样做,是因为同一个页面上可能有多个演示文稿实例,并且每个演示文稿实例应拥有我们插件的自己实例。
// toaster.js
export default () => ({
id: 'toaster',
init: (deck) => {
deck.addKeyBinding({ keyCode: 84, key: 'T' }, () => {
deck.shuffle();
console.log('🍻');
});
},
});
注册插件
将插件注册在 配置选项 的 plugins
数组中。您还可以使用 Reveal.registerPlugin( Plugin )
在运行时注册插件。
import Reveal from 'dist/reveal.esm.js';
import Toaster from 'toaster.js';
Reveal.initialize({
plugins: [Toaster],
});
异步插件
如果您的插件在 reveal.js 完成初始化之前需要运行异步代码,它可以返回一个 Promise。这里有一个示例插件,它将初始化延迟三秒。
let WaitForIt = {
id: 'wait-for-it',
init: (deck) => {
return new Promise((resolve) => setTimeout(resolve, 3000));
},
};
Reveal.initialize({ plugins: [WaitForIt] }).then(() => {
console.log('Three seconds later...');
});