
语言 🇨🇳 简体中文
背景
API
扩展开发
背景
FastComments 提供通过我们称为扩展的脚本来扩展核心功能的能力。
一个 Extension 可以向评论小部件添加额外的标记、事件监听器,并运行任意代码。
在这里你会找到我们在生产环境中使用的扩展示例,以及关于如何编写扩展的文档。
扩展的生命周期 
在评论小部件开始获取第一批评论并呈现 UI 之前,会获取并调用每个扩展的脚本。
在初次加载时,以下数据将附加到扩展对象上:
config- 对config对象的引用。translations- 对translations对象的引用。commentsById- 对按 id 存储的所有评论的引用。root- 对根 DOM 节点的引用。
扩展应覆盖所需的函数,评论小部件将在适当的时候调用这些函数。
定义扩展 
最小可行的扩展如下:
Run 
为了这个示例,将其保存为 my-extension.js,并使其可以通过 https://example.com/my-extension.min.js 访问。
此扩展不会执行任何操作,除了在加载时它会获取由核心评论库创建的扩展对象。
该 Extension 对象是单例的,不会与其他扩展共享。
接下来,要加载我们的扩展,必须告知评论小部件有关它。例如:
Run 
有关功能示例,请参见下一节。
示例扩展 
在 FastComments,我们使用相同的 API 编写自己的扩展。您可以在以下端点查看这些扩展的未压缩代码:
深色模式
深色模式扩展在检测到 "dark" 页面时有条件地加载。该扩展只是向评论小部件添加一些 CSS。这样当不需要时我们就不必加载深色模式的 CSS。
https://fastcomments.com/js/comment-ui/extensions/comment-ui.dark.extension.js
审核
当当前用户是版主时,我们会使用审核扩展。
这是一个用于添加基于点击的事件监听器、发起 API 请求、向评论菜单和评论区域添加项的好示例。
https://fastcomments.com/js/comment-ui/extensions/comment-ui.moderation.extension.js
实时聊天
实时聊天扩展(结合其他配置和样式)可以将评论小部件变为实时聊天组件。
https://fastcomments.com/js/comment-ui/extensions/live-chat.extension.js
扩展对象 
扩展对象包含以下定义:
Run 
扩展 API 
与 Extension 交互很简单,因为我们只需定义要调用的函数的引用。
基于前面的示例,假设我们想在每条评论的顶部添加 HTML:
Run 
每当你以这种方式返回 HTML 时,它会通过一个 DOM 差分算法合并到 UI 中。
手动触发评论的重新渲染
我们可以等待初始页面加载完成,然后通过调用 reRenderComment 手动重新渲染某条评论:
Run 