跳到主要内容

Slate

  • ianstormtaylor/slate
  • slate ~84kb + immer
  • slate-react ~59kb - +slate ~145kb
  • 特性
    • 原生 react
    • 自定义 render
    • 没有固定的文档模型 - 基于接口 - POJO - 可以直接序列化
      • 可以在不同类型之间进行转换
    • 插件就是直接修改 Editor 对象
    • 设计上尽可能映射 DOM 模型 - Mirroring the DOM as much as possible is one of Slate's principles
      • Block、Inline、Leaf、Void 等元素概念
    • Text properties are for non-contiguous, character-level formatting.
    • Element properties are for contiguous, semantic elements in the document.
    • 只读模式可以将 Slate 作为渲染
    • 没有默认的完善渲染组件 - 没有视图层
      • 便于利用自定义组件
      • renderElement = DefaultElement - inline 渲染 span,block 渲染 div
      • renderLeaf = DefaultLeaf - 渲染 span
    • 没有内建的样式定义 - 但很容易实现
    • 不只是用来作为富文本编辑
      • 可以用来做 CMS、组件编辑
    • 通过递归渲染 + contentEditbale 实现编辑
  • 封装
  • 参考

FAQ

为什么需要 onDOMBeforeInput

处理 beforeinput 事件,上下文菜单中触发的事件。