惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
C
Check Point Blog
博客园_首页
B
Blog
D
Docker
U
Unit 42
量子位
I
InfoQ
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
GbyAI
GbyAI
L
LangChain Blog
云风的 BLOG
云风的 BLOG
博客园 - Franky
美团技术团队
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
Vercel News
Vercel News
Recent Announcements
Recent Announcements
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Google DeepMind News
Google DeepMind News

时间的朋友

Windows 命令行密码重置 Anaconda安装 typescript 注解解读1 Konvajs Shape加载自定义图片 sshpass 使用 why-is-node-running webgl笔记 SharedArrayBuffer is not defined blender 常用快捷键 | 时间的朋友 vue -- v3.4commit提交记录2 vue2 升级vue3报错问题整理 着色器 expressjs 源码 hyper-V arch linux 网络配置 element input数字格式化 three 拼接货架 WebAudio笔记 Windows nginx重启bat脚本 vue -- v3.4commit提交记录 URI malformed vue3 -- Class 对象在组件中使用范例 | 时间的朋友 ruby 安装和升级 element-plus 老版本cascader使用卡死问题 vue3 内置Transition组件 | 时间的朋友 前端memo的实现 | 时间的朋友 Vue -- vue-class-component源码 | 时间的朋友 linux 优化脚本 typescript 装饰器 | 时间的朋友 microbundle 源码 | 时间的朋友 WSL2问题解决WslRegisterDistribution failed with error: 0x800701bc
slate.js API整理 | 时间的朋友
2022-07-25 · via 时间的朋友

Published: · LastMod: July 25, 2022 · 707 words

slate.js 🔗

version : v0.47

Nodes 🔗

nodes是整个最重要的类型

  • Editor根节点包含了整个文档树的内容
  • Element节点包含当前区域的语义化含义
  • 文本Text节点包含文本的内容

Editor 🔗

顶层的Slate文档就是Editor自身。它包含了整个文档的所有内容。

1
2
3
4
interface Editor {
  children: Node[]
  ...
}

Element 🔗

Element组成了富文本文档的中间层数据。所有的Node都可以进行自定义。

1
2
3
interface Element {
  children: Node[]
}

节点通过不同的type进行区分,最重要的就是要有children属性

Blocks vs. Inlines 🔗

块状元素和行内元素

默认所有Element都是块状元素

通过覆盖editor.isInline函数的默认行为来自定义元素是否是行内元素,默认都是返回的false。

元素可以包含块元素,也可以包含作为子元素与文本节点混合在一起的内联元素。但元素不能包含一些是块的子级和一些内联的子级。

Voids 🔗

对于一些不能被编辑的元素块,通过覆盖editor.isVoid(默认返回的是false)方法来进行控制

Text 🔗

文本节点是整个文档树中最低等级的节点,包含文档的内容以及相对应的格式化

Locations 🔗

位置用作索引文档,方便文档在进行插入删除时进行定位。

Path 🔗

Path是最低等级的方式去关联一个位置。每个路径都表示一个Node节点相对于父Node的相对位置。

type Path = number[]

整个Editor的Path就是[]

Point 🔗

point 要相对于path来说就更具体, 包含一个offset表示一个更具体的文本。

1
2
3
4
interface Point {
  path: Path
  offset: number
}

你可以把它想象成一个光标

Range 🔗

range代表的是一个范围,其中有一个起点和终点

1
2
3
4
interface Range {
  anchor: Point
  focus: Point
}

其中只是anchor和focus只是关联在文档中的位置,而不去关联elements

Selection 🔗

选取API。选取是一种特别的Range