一席之地
Home
Blog
Photos
Think
Works
Series
Tags
About
GitHub
搜索
⌘K
Home
Blog
Photos
Think
Works
Series
Tags
About
GitHub
Digital Garden - 数字花园
返回所有系列
《ProseMirror 源码分析》
逐模块拆解 ProseMirror:文档模型、Schema、Transaction、视图渲染与协作编辑的实现机制。
共
60
篇文章,按写作时间排序
1
ProseMirror 源码分析开篇:富文本编辑器到底难在哪
2017年05月10日
2
ProseMirror 仓库全景:22 个包怎么分工
2017年05月17日
3
跑通一个最小 ProseMirror:先看文档长什么样
2017年05月24日
4
ProseMirror model(上):Node 与 Fragment,文档树的骨架
2017年06月07日
5
ProseMirror model(中):Mark,内联格式怎么挂在文本上
2017年06月14日
6
ProseMirror model(下):Schema 与 content expression,文档的类型系统
2017年06月21日
7
ResolvedPos:一个数字位置怎么变成路径
2017年07月05日
8
Slice 与 replace:切一块文档出来再塞回去
2017年07月12日
9
DOMSerializer:文档怎么变成 DOM 和 HTML
2017年07月19日
10
DOMParser:parseDOM 规则与 HTML 解析
2017年08月02日
11
findDiffStart / findDiffEnd:两份文档怎么求差
2017年08月09日
12
model 收官:Node 上的辅助方法与位置约定总结
2017年08月16日
13
ProseMirror transform(上):Step 抽 象,所有修改的最小单位
2017年09月06日
14
ProseMirror transform(下):ReplaceStep 与 Fitter,最复杂的一步
2017年09月20日
15
StepMap:一步修改怎么映射每个位置
2017年10月03日
16
Mapping:多步映射的链式合并,rebase 的地基
2017年10月11日
17
structure.ts:split/join/lift/wrap 的可达性判断
2017年10月18日
18
Transform 类:构建修改的 API 层
2017年10月25日
19
ProseMirror state(上):EditorState,不可变编辑器状态
2017年11月08日
20
Selection 体系:四种选区与选区书签
2017年11月15日
21
Transaction:Transform 加上状态语义
2017年11月22日
22
Plugin 系统(上):StateField 与插件状态
2017年12月06日
23
Plugin 系统(下):props、appendTransaction 与 filterTransaction
2017年12月13日
24
state 收官:动手写三个插件验证理解
2017年12月20日
25
ProseMirror view(上):EditorView,状态与 DOM 之间的桥
2018年01月03日
26
ViewDesc(上):文档到 DOM 的描述树
2018年01月10日
27
ViewDesc(下):增量更新怎么做到只改动的部分
2018年01月17日
28
DOMObserver 与 readDOMChange:浏览器改了 DOM,怎么读回文档
2018年02月07日
29
input.ts:从 keydown 到 dispatchTransaction 的输入管线
2018年02月14日
30
选区同步 :state 选区与 DOM 选区的双向对齐
2018年02月21日
31
Composition 与 IME:中文输入法事件的处理
2018年02月28日
32
NodeView 与 MarkView:把渲染权交给你
2018年03月07日
33
Decoration 体系:不修改文档的视觉标注
2018年03月14日
34
clipboard:复制粘贴的序列化与解析
2018年03月21日
35
domcoords:屏幕坐标与文档位置的双向换算
2018年04月04日
36
browser.ts:浏览器差异补丁集
2018年04月11日
37
view 收官:不用官方扩展,手写一个最小可用编辑器
2018年04月18日
38
扩展(上):keymap,最小的插件
2018年05月09日
39
commands:命令的签名约定与组合器
2018年05月16日
40
history:undo/redo 栈与 rebasing
2018年05月23日
41
inputrules:「# 空格」变成标题是怎么实现的
2018年06月06日
42
schema-basic:官方基础文档结构
2018年06月13日
43
schema-list:列表节点与最复杂的一批命令
2018年06月20日
44
gapcursor:光标落不进去的地方怎么办
2018年07月04日
45
dropcursor:拖拽时的插入位置指示
2018年07月11日
46
menu:菜单栏组件体系
2018年07月18日
47
collab(上):协作编辑的 rebase 原理
2018年08月01日
48
collab(下):receiveTransaction 与整个收发循环
2018年08月08日
49
changeset:变更集的计算与展示
2018年08月15日
50
markdown:文档与 Markdown 的双向转换
2018年09月05日
51
search:查找替换插件
2018年09月19日
52
表格专题(上):表格 schema 与 TableMap
2018年10月03日
53
表格专题(中):CellSelection,矩形的选区
2018年10月10日
54
表格专题(下):addColumn/mergeCells 等编辑命令
2018年10月17日
55
columnresizing:列宽拖拽的实现
2018年10月24日
56
example-setup:官方起手式是怎么装配的
2018年11月07日
57
test-builder:测试文档怎么写得像代码
2018年11月14日
58
多包仓库的构建与发布工程
2018年11月21日
59
ProseMirror vs Draft.js / Slate / Quill:文档模型与更新模型对比
2018年12月05日
60
ProseMirror 系列收官:从这套代码里能拿走的设计
2018年12月19日