编辑器能否输入标题、加粗文字或响应快捷键,都由安装的扩展决定。扩展把一种功能的配置、命令和生命周期放在一起,再交给 Editor 使用。
选哪一种扩展
| 你要增加什么 | 使用什么 | 例子 |
|---|---|---|
| 一种行为,不增加正文结构 | Extension | 快捷键、历史记录 |
| 一种正文结构 | Node | 段落、图片、提示组 |
| 附着在文字上的格式 | Mark | 粗体、斜体、链接 |
StarterKit 是一组常用扩展的组合。你可以直接使用它,也可以按产品需要选择和配置其中的能力。
从快捷键开始
假设你希望用 Mod-Shift-b 执行加粗,不需要定义新节点,只需增加快捷键行为。示例的 core/shortcuts.ts 使用 Extension.create(),在 addKeyboardShortcuts() 中调用现有的 toggleBold()。
core/shortcuts.tsts
import { Extension } from "@quirekit/core";
/** A host-authored behavior extension using the same typed command registry as the toolbar. */
export const writingShortcuts = Extension.create({
name: "writingShortcuts",
/** @returns A keyboard binding that participates in the editor's existing history. */
addKeyboardShortcuts() {
return { "Mod-Shift-b": () => this.editor?.commands.toggleBold() ?? false };
},
});
this.editor 指向安装该扩展的实例。调用现有命令以后,加粗仍使用同一个选区,也可以通过原来的历史记录撤销。将扩展加入创建时的 extensions 数组即可安装。
配置与扩展现有功能
.configure(options) 调整扩展公开的选项;.extend(config) 在已有定义上增加或替换行为。扩展里的 addOptions() 提供默认配置,addStorage() 保存实例运行状态。
配置和 storage 不会自动写入正文。需要随文档保存的业务字段,应定义为节点或标记属性。跟着行为扩展教程实现一个命令,再学习输入规则与 PM 插件和 NodeView。
当内容需要更多能力
定义 Node 只解决“文档里有什么”。HTML 输出、Canvas 布局、跨结构选择、DOCX 转换和 AI 读取分别需要对应的实现,不会由节点名自动推断。