js访问controller_深入 Slate.js - Controller

本文聚焦于Slate.js的Controller(新版本称为Editor),作为编辑器的核心,它负责文档内容的访问和控制。通过实例化Controller,可以设置编辑器的初始值、注册插件、切换只读模式等。Controller的方法,被称为Command,用于操作文档模型。本文还将探讨Slate.js的指令系统设计。
摘要由CSDN通过智能技术生成

89e50b1b7d6bafebf7aaada22057344f.png

本文是深入 Slate.js 系列的第 10 篇

  • 阅读前一篇 - Slate.js 是怎么工作的
  • 后一篇 - 深入 Slate.js - 指令系统

Controller 是 Slate.js 大脑,在新版本里,它被重命名为 Editor,无论是何种名字,他反映的都是一个编辑器实例对象。

4028dabc03c552ea0bef577df93a67cd.png

开发者可以通过实例化一个 Controller 对象,实现对文档内容的访问和控制:

import { Editor } from 'slate'

const controller = new Editor({
  value,
  plugins,
  readOnly,
  onChange
}, { normalize: false });

可以看到,初始化一个编辑器,需要告诉 Slate.js:

  • value:编辑器的初始值
  • plugins:编辑器具有哪些能力,即为编辑器注册哪些插件,我们会在 插件 一节中对其做更详尽的描述
  • readOnly:编辑器是否为只读模式
  • onChange:当文档模型变更后,应当作何反应。例如,我们可以刷新编辑器内容,也可以向协同者广播变更产生的操作集合

另外也支持对初始化过程做一些配置,例如:

  • normalize:是否对文档进行 normalize,这个概念我们将在 normalize 一节中阐述

Controller 是 UI 无关的,它的实例方法都是用来操作文档模型(内容及选区)的:

controller
  .insertText('Hello World')
  .moveToStartOfNextText()

这些方法在 Slate.js 被命名为 Command,即指令,接下来我们就看看 Slate.js 是如何设计指令系统的。


如果你对协同文档技术感兴趣,也可以加入下面的群(钉钉/微信),和我们一同讨论。

a18b6b91718e65fabbec9e9a792e67ea.png
扫码入群一起讨论~

也欢迎关注本账号,我们会持续更新~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值