Wener Notes

Slate

约 1 分钟阅读
  • ianstormtaylor/slateGitHubianstormtaylor/slateianstormtaylor/slate · 文档 · slate 84kb + immer · slate-react 59kb - +slate 145kb · 特性 · 原生 react · 自定义 render · 没有固定的文档模型 - 基于接口 - POJO - 可以直接序列化笔记: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 作为渲染
      • 只会增加 4k 左右依赖 - ianstormtaylor/slate#2554GitHub Issueianstormtaylor/slate#2554ianstormtaylor/slate · 文档 · slate 84kb + immer · slate-react 59kb - +slate 145kb · 特性 · 原生 react · 自定义 render · 没有固定的文档模型 - 基于接口 - POJO - 可以直接序列化笔记:Slate
    • 没有默认的完善渲染组件 - 没有视图层
      • 便于利用自定义组件
      • renderElement = DefaultElement - inline 渲染 span,block 渲染 div
      • renderLeaf = DefaultLeaf - 渲染 span
    • 没有内建的样式定义 - 但很容易实现
    • 不只是用来作为富文本编辑
      • 可以用来做 CMS、组件编辑
    • 通过递归渲染 + contentEditbale 实现编辑
  • 封装
  • 参考

FAQ

为什么需要 onDOMBeforeInput

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

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • Editor Awesome
    笔记 · slatejs

    推荐👍 Lexical, Tiptap, QuillJS · React 优先建议选择 Lexical,否则考虑 tiptap/prosemirror · prosemirror · 实现 Editor 的基础库 · tiptap · Hufe921/canvas-editor

  • plate
    笔记 · Slate

    udecode/plate · -> Slate+shadcn+tailwindcss+radix

References

GitHub8 条
Hacker News1 条
其他外链4 条
最近更新commit 81de749Edit

On this page