跳到正文
MSFE — SOURCE-FIRST MARKDOWNPREVIEW · MIT CORE · 20 PACKAGES

MSFE = Markdown Source-First Editor · 源码优先的 Markdown 编辑器框架 · 预览版

FIG 0 — 现场组装README.md · 自动演示
  1. 01只有内核
  2. 02装插件
  3. 03写插件
  4. 04源码未变
点按文中任意处,即可执笔
pnpm add @quirekit/msfe-core @quirekit/msfe-starter-kit
PART 1框架 · MSFE
FIG 1一个内核

一个内核,构建各种编辑器

MSFE 是一个编辑器内核加一组可自由组合的插件。下面四个都是真实可编辑的实例,共用同一个内核,按场景装上不同的插件。

FIG 1 — 四种组装createMsfeEditor({ extensions })
聊天输入框IM · 评论区
extensions: [StarterKit, Mention]
团队笔记知识库 · 周报
extensions: [StarterKit, CustomContainer, Highlight]
技术文档API 文档 · 教程
extensions: [StarterKit, Math, Mermaid]
脑图白板规划 · 头脑风暴
extensions: [StarterKit, MsfeMindMap]
ONE CORE
同一个 createMsfeEditor源码、解析、投影、命令与撤销都由内核负责。
PAY FOR WHAT YOU USE
每个能力一个包按需引入,打包体积只跟装上的插件有关。
ALL THE WAY UP
MD Editor 也是这样构建的完整产品同样只是一组插件加上界面,见下文第二部分。
FIG 2框架与插件

每一种能力,都是一个插件

MSFE 本身只负责源码、解析与投影。容器、公式、图形、AI 都是插件:声明语法、读写源码、画出投影、注册命令。按需装上现成的,也能自己写一个。

FIG 2 — 插件实验台0 / 7 已接入 · 自动演示
  • 容器msfe-markdown-extras
    addMarkdownExtensionsaddSourceaddStateaddProjectionLayers
  • 高亮msfe-markdown-extras
    addMarkdownExtensionsaddSourceaddProjections
  • 公式msfe-markdown-extras
    addMarkdownExtensionsaddSourceaddProjectionLayers
  • Mermaidmsfe-markdown-extras
    addSourceaddProjectionLayers
  • 流程图msfe-flowchart
    addSourceaddAttributesaddCommandsaddProjectionLayers
  • 思维导图msfe-mind-map
    addSourceaddAttributesaddCommandsaddProjectionLayers
  • 色块(自定义)本页 20 行
    addProjectionLayers
  • color-swatch.ts
    const ColorSwatch = Extension.create({
      name: 'colorSwatch',
      addProjectionLayers: () => [{
        key: 'color-swatch', placement: 'inline',
        build(input) {
          const text = input.document.slice(input.from, input.to)
          return [...text.matchAll(/#[0-9a-f]{6}\b/gi)].map(m => {
            const from = input.from + m.index
            return {
              type: 'widget', from, key: `swatch-${from}`,
              // Swatch.vue: a ColorPicker that rewrites these 7 characters
              view: componentView(Swatch, { color: m[0], from }),
            }
          })
        },
      }],
    })
SOURCE
拔插 0 次,原文 0 字节改动插件只决定怎么呈现;点色块改色,才会改写那 7 个字符。
HOOKS
语法 · 源码 · 投影 · 命令还有快捷键、输入规则、组件视图与 AI 能力声明。
COMPOSE
按需组合Vue / React 组件可以直接作为插件的视图,产品只装自己需要的。
FIG 3源码优先

源码是真相,呈现是投影

编辑器先把 Markdown 解析成语法树,再由投影层画出标题、容器和图形。你在任何视图里改一个字,落到源码上都只是那几个字符;改不了的地方宁可拒绝,也不重写整段。

FIG 3 — 同一处修改,贯穿三层合拢
L0 · Markdown 源码
# 交付说明
一段 **原生 Markdown** 正文。
```mermaid
flowchart LR
  写作 --> 交付
```
L1 · Lezer 语法树DocumentATXHeading1ParagraphFencedCodeHeaderMarkTextStrongEmphCodeInfo
L2 · 呈现(投影层)

交付说明

一段 原生 Markdown 正文。

写作交付
1 万段文档 · 改一处15,234 → <150语法片段比对次数
@quirekit/lezer-markdown

优化过的 Lezer Markdown 解析器。在原生增量解析之上记录实际复用的语法块,编辑后只比对改动附近的片段;每一次的结果都与完整解析逐次核对一致。

@quirekit/cm-*

源码级维护的 CodeMirror 6。15 个包从源码构建,修正相邻块间距进入高度图、DOM 复用与旧视图释放,长文档里的点击、滚动和拖选落点更准。

FIG 4开发者

几行代码,放进你的应用

从一个编辑器实例开始,需要什么扩展就装什么。命令、状态、组件视图和资源生命周期都有完整的开发指南。

FIG 4 — 接入与包结构Vue · React · 原生 JavaScript
// editor.ts
import { createMsfeEditor } from '@quirekit/msfe-core'
import { StarterKit } from '@quirekit/msfe-starter-kit'

const editor = createMsfeEditor({
  parent: document.querySelector('#editor'),
  markdown: '# 给想法一点空间',
  extensions: [StarterKit],
})

// 保存时取回的,就是用户写的那份 Markdown
const markdown = editor.getMarkdown()
内核msfe-coremsfe-starter-kitmsfe-prose
框架绑定msfe-vuemsfe-react
语法与节点msfe-headingmsfe-boldmsfe-linkmsfe-imagemsfe-code-blockmsfe-htmlmsfe-html-sandboxmsfe-markdown-extras
图形msfe-flowchartmsfe-mind-mapmsfe-whiteboard
协作与 AImsfe-commentsmsfe-collaborationmsfe-collaboration-hocuspocusmsfe-ai
20 个包 · 全部 MIT · 189 个测试文件 · 预览版,公共 API 仍可能调整快速开始开发文档支持范围
PART 2产品 · 用 MSFE 构建的 MD Editor
FIG 5MD Editor

基于 MSFE 的完整文档编辑器

MD Editor 是用 MSFE 构建的产品,开箱即用。同一份源码可以交付为 DOCX、PDF、OFD,源文件本身就是 .md;Markdown 和 docx 都能导入继续写。

FIG 5 — 一份源码,四种交付Vue 组件 · MIT
01 · 源码
# 季度复盘

收入同比增长 **18%**。

$$
g = \frac{R_t - R_{t-1}}{R_{t-1}}
$$

```quirekit-mind-map
{"title":"下季度重点", …}
```
导出→导入←
02 · 交付
DOCX
季度复盘

收入同比增长 18%。

g = (Rt − Rt−1) / Rt−1
下季度重点留存新渠道
PDF
OFD
MD
FORMULA
可编辑公式LaTeX 转为 DOCX 原生公式,在 Word、WPS 里还能继续改。
DIAGRAM
图形可导回图形导出为图片并保留源数据,导回后仍能双击编辑。
TEMPLATE
导出模板标题、正文、表格样式套用模板,DOCX、PDF 与 OFD 同源输出。
  • 图形编辑器流程图、思维导图、白板
  • 公式公式面板与 LaTeX
  • 文本绘图Mermaid、PlantUML、DOT
  • 评论与 @提及单独保存,原文干净
  • AI 助手按块改写,可审阅撤回
  • 协作记录按时间线追溯改动
  • 手机上也能写触屏选区与工具栏
@quirekit/md-editor/vue

下一个想法,从 Markdown 开始

把 MSFE 放进你的应用,或者直接用 MD Editor。