V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
YadongZhang
V2EX  ›  分享创造

记一次 Draftjs 实践

  •  
  •   YadongZhang · 2020-07-22 17:45:54 +08:00 · 2442 次点击
    这是一个创建于 1586 天前的主题,其中的信息可能已经有所发展或是发生改变。

    github 地址

    Demo

    1. 还有需要哪些 feature (表格、公式、图片、参考文献、自定义模版编译 LaTeX 、创建项目、文件列表...

    2. 做这个编辑器有意义吗

    第 1 条附言  ·  2020-07-31 17:23:02 +08:00
    添加博客地址:[blog]( https://zhangyadong.me/)
    11 条回复    2020-07-25 01:05:31 +08:00
    find456789
        1
    find456789  
       2020-07-22 22:16:22 +08:00
    1. marikdown
    2.有
    YadongZhang
        2
    YadongZhang  
    OP
       2020-07-22 22:23:52 +08:00
    @find456789 markdown 是认真的吗,pandoc 可以把 markdown 转成 latex
    find456789
        3
    find456789  
       2020-07-23 01:07:32 +08:00
    @YadongZhang

    我不太了解 pandoc, 不过我发现很多社区,如 github,简书,v2 都支持 markdown,并以此为特色 ,所以我猜测,markdown 应该是一个很重要的功能
    YadongZhang
        4
    YadongZhang  
    OP
       2020-07-23 01:13:18 +08:00 via Android
    @find456789 论文排版编辑器,markdown 用不到
    charten
        5
    charten  
       2020-07-23 15:19:12 +08:00
    emmm....以前在业务中有用过,遇到 bug 到 github issue 反馈,一年后才回复我,我都已经将业务的富文本替换成我自己写的了(其实就是 contenteditable=true )。
    那时候遇到的问题就是表情图片删除后,导出为 html 后依然还有那张图片。。。
    YadongZhang
        6
    YadongZhang  
    OP
       2020-07-23 15:50:11 +08:00
    @charten #5 是个大佬。。。
    charten
        7
    charten  
       2020-07-24 09:49:12 +08:00
    @YadongZhang 掌握浏览器的 range API 其实不是很复杂的。。。。我也是 fork 一个叫 wang editor 的富文本编辑器过来改的,后面把它的代码各种删(不符合我司业务的部分),删到最后就只剩下它里面一个 range 库。。。
    YadongZhang
        8
    YadongZhang  
    OP
       2020-07-24 12:40:41 +08:00
    @charten #7 原生的坑好多。。。硬核大佬,wang editor 国内人士做的,不清楚实现原理,开箱即用的 CKEditor 5 挺好的,不过太复杂了
    SolidZORO
        9
    SolidZORO  
       2020-07-25 00:40:02 +08:00
    就我最近二发编辑器经验,如果一个编辑器 Core 没有比较好用的 Table 和 CodeBlock Plugin,很大程度可以说明一些问题。所以,如果你是自研,也请先搞定这两个,熬过来之后,别的功能都很好实现。

    BTW,复杂和困难是两回事。
    SolidZORO
        10
    SolidZORO  
       2020-07-25 00:52:34 +08:00
    Sorry,打错字,上面「二发」是「二开」。

    你的第二个问题如果是说基于 darft 封装一个开箱即用的我个人觉得是「有意义」的。因为现在市面上的所有富文本编辑器并不是都可以开箱即用的,多多少少都会有一些问题。

    不过你是基于 darft 二开,势必会在「某一个」阶段遇到一个「不可避免」的问题,那就是重写,因为富文本这个领域,如果你不能控制 Core Engine 的一些代码,是很难做到指哪打哪的,到时候会略显被动,例子请参考语雀。

    当然,如果你只是想比较「浅」的基于 darft 二开,我认为你奉献一些 Plugin 就好了。
    YadongZhang
        11
    YadongZhang  
    OP
       2020-07-25 01:05:31 +08:00
    @SolidZORO table 技术上是可以实现的,正因为是基于 Draftjs 开发,所以我遇到的坑基本上都会是该框架的 bug,知乎编辑器也是用 Draftjs 做的,虽然也有好多问题,比如上述 CodeBlock,但是不影响生产力,不过我做的代码基本上都是官方例子改过来的,所以只是实践应用,算不上开发,东拼西凑做个 latex 编辑器可以少花时间在论文排版上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2744 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:36 · PVG 19:36 · LAX 03:36 · JFK 06:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.