先确定产品,再选择插件。Classic 是分页编辑产品,Block 是 HTML 连续流产品;两者共用 Core 与部分文档能力,但产品控件、预设和挂载方式各有合同。
插件目录与详情页共用左侧的编辑器切换,接入示例优先展示所选产品;也可在正文中临时切换作比较。旁边的筛选按钮提供能力分类与协议标签,协议可多选,不选表示不限。手机端在导航抽屉中操作;切换页面或语言保留条件,面板内“重置”恢复全部。
编辑器筛选保留“直接支持”和“需适配”的项目;“未支持”和“未验证”可在全部目录中查阅。总览与接入指南始终保留,筛选不会离开正在阅读的页面。
读懂适用性
每个参考页顶部列出两端状态与所需装配,卡片也显示相同状态。
| 状态 | 含义 | 接入时怎么做 |
|---|---|---|
| 直接支持 | 已有对应产品装配 | 使用该页列出的预设或入口,继续满足控件开关、服务与资源条件 |
| 需适配 | 共享能力可复用,但需要明确的产品适配或宿主接线 | 沿该页的适配入口或配置合同接入,不能只复制底层 import |
| 未支持 | 该入口不符合产品当前合同 | 选择另一产品或已有适配;例如 Block 不消费 Classic 的 plugins |
| 未验证 | 尚无完整产品接入与验证路径 | 不把公开导出视为产品支持承诺,先验证模型、View、交互与文件链路 |
“直接支持”不等于全部功能默认开启,也不承诺所有导出格式完整往返。许可是另一维度:MIT、AGPL、商业标签继续来自包元数据;私有包需先取得相应分发。
三个层次,各有安装位置
| 层次 | 拥有什么 | 接入位置 |
|---|---|---|
| 共享文档能力 | 节点、标记、命令、配置与宿主端口 | Core 的 extensions,或由产品预设安装 |
| Classic 产品适配 | 功能区、工具栏、面板、文件服务和产品生命周期 | 普通扩展放 extensions;产品插件放 plugins;产品预设放 preset |
| Block 产品适配 | 连续流呈现、块操作、工具栏与工作区接线 | createBlockEditor 的 preset 配置或 extensions,附加 Vue 控件通过产品插槽挂载 |
Classic 的 preset 是产品预设对象。Block 的 preset 是配置对象或 false;createBlockEditorPreset() 返回扩展数组,供独立 Core 使用。两者不能互换。
文档配置只维护一份。在同一参考页切换 Classic、Block 接入说明,随后阅读共用的配置与命令。预设已有的能力通过子项配置;确需替换时先关闭原子项,避免重复安装。
共享图形能力:选择产品装配
Flowchart负责流程图源码、预览和宿主端口。Classic 使用 ClassicFlowchart接入工作区;Block 默认预设已经提供工作区和媒体交互,使用 preset.flowchart 配置或关闭。
以下片段的 element 是已有宿主元素。宿主负责尺寸、保存和资源;页面结束时调用 instance.destroy()。
Classic · 需适配
共享扩展只定义内容与宿主端口。使用下列 Classic 适配入口接入工作区和产品交互,不要同时安装共享扩展与其同名适配实现。
ClassicFlowchartimport { createClassicEditor } from '@quirekit/classic-editor'
import '@quirekit/classic-editor/styles.css'
import { ClassicFlowchart } from '@quirekit/classic-flowchart'
const instance = createClassicEditor({
element,
extensions: [ClassicFlowchart],
})Block · 直接支持
createBlockEditor 默认预设已装配此能力。通过 preset 中对应子项配置;图形编辑使用预设注入的工作区,宿主仍负责保存和资源。不要重复安装同名扩展。
createBlockEditorPresetimport { createBlockEditor } from '@quirekit/block-editor'
import '@quirekit/block-editor/styles.css'
const instance = createBlockEditor({
element,
content: { type: 'doc', content: [{ type: 'paragraph' }] },
})思维导图、白板、文本绘图与数据视图采用相同的共享能力/产品装配分层。已有适配不代表 DOCX、PDF 或其他格式自动保留全部编辑能力,以相应文件服务说明为准。
表格与编号:包名不能决定适用范围
@quirekit/block-table 复用 @quirekit/classic-table 的规范节点和命令,通过 table-only profile 接入连续流;@quirekit/block-numbering 复用 @quirekit/classic-numbering 的规范编号和命令。它们不安装 Classic 壳或分页。
- 表格:从 WordTable查阅共享语义;Block 接入使用 createBlockTableExtensions。
- 列表:从 WordNumbering查阅共享配置;Block 接入使用 createBlockNumberingExtensions。
表格扩展数组负责模型与命令。若使用 Vue 产品界面,另将表格控件挂入 BlockEditor 的 tools 插槽:
<script setup lang="ts">
import { BlockEditor } from '@quirekit/block-editor/vue'
import { BlockTableMenu } from '@quirekit/block-table/vue'
// instance 来自 createBlockEditor,extensions 已展开 createBlockTableExtensions()。
</script>
<template>
<BlockEditor :instance="instance">
<template #tools="{ editor, editable, viewport }">
<BlockTableMenu :editor="editor" :editable="editable" :viewport="viewport" />
</template>
</BlockEditor>
</template>
Vue 组件管理 View 挂载,创建实例时省略 element;实例创建者仍负责销毁。表格菜单、编号图库与底层命令分别有自己的支持边界,不能把“底层模型可复用”理解为“全部产品交互已接入”。