接口
我们知道Slate
使用纯 JSON
数据对象,只要这些数据符合接口标准就行。也就是说每一个节点都有一个接口标准与之对应。比如文本节点:
interface Text {
text: string
}
在实例这些接口数据的同时我们也可以增加额外的属性,这根据我们的实际设计需求而定。增加的属性不会妨碍Slate
的解析。比如,Element
节点的接口标准是下面这样的:
interface Element {
children: Node[]
}
针对这样一个宽松的接口,我们施展的空间就很大了。比如 :
const paragraph = {
type: 'paragraph',
children: [...],
}
const link = {
type: 'link',
url: 'https://example.com',
children: [...]
}
上面的代码中,我们增加了 type
属性,在 link
中还增加了url
属性,根据link
的数据定义,我们就能够很容易的渲染成下面的元素:
{element.children}
辅助工具
Slate 中提供了很多的辅助函数,这大大方便了我们的使用。比如下面,在使用节点的过程中我们可能需要用到:
import { Node } from 'slate'
// 获取元素节点内的字符内容
const string = Node.string(element)
// 在一个根节点中获取指定位置的节点
const descendant = Node.get(value, path)
在使用范围时可能会用到下面的工具:
import { Range } from 'slate'
// 按顺序获取选择范围的起点和终点
const [start, end] = Range.edges(range)
// 检查一个选择范围是否被折叠。即一个光杆插入点,没有选择内容,起点和终点在一起。
if (Range.isCollapsed(range)) {
// ...
}
所以,在正式开发之前先了解一下相关的辅助工具是很有必要的。
自定义辅助工具
除了使用Slate提供的这辅助工具外,我们当然也可以自定义一些工具,比如下面这个判断一个元素是否是图像元素的工具:
const isImageElement = element => {
return element.type === 'image' && typeof element.url === 'string'
}
然后把它们绑定的系统命名空间中去,以后使用就相当的方便了
import { Element } from 'slate'
expo服务器托管网rt const MyElement = {
...Element,
服务器托管网 isImageElement,
isParagraphElement,
isQuoteElement,
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 后端请求转发与请求重定对于向前端静态资源的加载影响
虽然在实际开发过程中用的很少,这里记录一下遇到的问题。因为有一次导致前端CSS样式文件无法加载,最后找出BUG的步骤 准备工作 后端代码 @Controller @RequestMapping(“/test”) public class ForwardAndR…