做 WYSIWYG Markdown 编辑器时,我为什么没继续用 zustand,而是写了 Zenith

查看 5|回复 0
作者:jaydenWang   
我在做一个 WYSIWYG Markdown 编辑器( domd ),体积大约 20KB 。这是一个纯数据驱动的编辑器。
Demo: WYSIWYG Markdown
在这个编辑器里,状态管理是核心问题。我把 domd 的状态管理单独抽出来,
封装成了一个库:Zenith 。
Github: Zenith
Zenith 的思路并不复杂:
把派生状态、缓存和依赖关系,明确地放在 store 内部,
而不是分散在组件和各种 selector 里。
这样带来的结果是:
  • 派生状态可以被稳定缓存
  • 组件拿到的是稳定引用
  • 性能表现更可预测,不需要反复“调”

    另一个比较关键的点是 undo / redo 。
    Zenith 是基于 Immer patch 的,
    不依赖整棵 state 的快照。
    在大数据量、频繁编辑的场景下,这一点差异很明显。
    Zenith 不是通用型状态库,也不追求简单。
    如果你在做编辑器、画布或类似的复杂前端,
    可能会对这种设计方式有兴趣。
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部