当前位置: 首页 > Web前端 > HTML

我用这些开源项目轻松搭建了一个在线文档平台

时间:2023-03-28 10:32:00 HTML

前言笔者最近为自己创建了一个在线文档平台,支持白板、思维导图、文档、电子表格、PPT、流程图、Markdown等,界面是这样的:其实现在市面上有很多这样的在线文档平台,笔者何必自己做一个呢?起初,笔者只是想在开源白板项目excalidraw的基础上增加云存储的功能,因为它的云存储版本是收费的,对一个数据库进行增删改查并不难。做完之后,我以为我做了一个开源的思维导图思维导图,为什么不同时支持它的云存储,然后每次发表文章时使用一些工具将Markdown转换为富文本,通常没有存储功能,所以是基于markdown-nice做了存储。这个时候想着反正支持这么多类型的文档,还不如简单的加上常用的流程图和电子表格,于是就变成了现在这个样子。那么笔者的文档平台相比市面上的相关产品有什么优势呢?答案是否定的。很明显,其他公司是靠这些产品赚钱的,无论是功能上还是体验上。一些开源项目是在存储功能的基础上增加的。当然,并不是说开源不好。毕竟市面上很多公司的产品也是基于开源项目,但是个人的力量毕竟有限。比如现在基本是必须的,我不能做在线协作功能,但是对于我个人来说,协作功能基本没什么用,所以无伤大雅。另外,在功能上,我不需要一些所谓的高级功能,只要能满足我的基本需求即可。如果要说优势的话,第一个就是数据保存在自己手里,不用担心一些小公司倒闭迁移数据;第二个是您不必担心付款。毕竟很多产品不付费不开会员就会限制创作。项目数量,有的思维导图产品还限制了节点数量,想要白嫖也不容易;三是各种平台不用切换,比如有的没有Markdown转富文本的功能,有的没有白板功能,我需要什么就加什么,就是了无非是一个较弱的功能。接下来笔者将对使用到的开源项目一一介绍。开源项目简介下面的项目基本上分为两类。一种是完整的工程形式,可以直接运行。作者只需要在项目的基础上添加一些按钮、标题输入框、提示等UI组件,然后添加数据发生变化时,实时保存到数据库中,获取数据并回填当它再次打开时;另一种是库或组件的形式,需要你自己创建一个工程来使用,再加上第一种涉及的功能。白板作者制作了两种白板。一种是基于excalidraw的手绘白板。本项目基于React,功能强大。支持绘制矩形、圆形、箭头、线段、手写笔、文本等元素。同时,有丰富的素材可供选择,支持端到端加密协作。你可以直接克隆它的仓库,作为一个完整的项目直接运行。此外,它还提供了React组件的形式,方便嵌入到你的React项目中。我不会用React,所以我直接根据它的完整项目修改。界面如下:另一种白板使用tiny_whiteboard,作者的一个开源小项目。其实也是参考excalidraw制作的。因为excalidraw是基于React的,在Vue项目上用起来不是很方便,所以想做一个框架无关的,当然功能简单很多,而且因为实现方式的原因,不支持绘制曲线椭圆等元素,元素过多会降低性能。不过经过笔者几篇文章的实际绘制和使用,还是可以满足基本需求的。界面如下:思维导图思维导图也是作者做的一个开源小项目思维导图。做这个项目的原因是在使用百度脑图的时候是一个开源的kityminder,但是它的最后一次更新已经卡在4年前了,而且作者不喜欢代码的组织方式(不太好理解),所以我就模仿了一个阉割版(为什么又是阉割版,因为作者水平一般)。在功能上,支持逻辑结构图、思维导图、组织结构图、目录组织图。作者尝试了鱼骨图,没能做出来(尴尬)。另外还支持主题设置、节点拖拽等,界面如下:流程图也有两种。一个是用bpmn-js做的BPMN流程图。基本使用比较简单,但是找了半天没有找到详细的文档。它的官方例子看起来不错,但是我找不到了。源码最后也没有完全实现它的作用:在使用了bpmn-js之后,发现了一个更强大的流程图框架mxgraph。虽然这个项目现在已经停止更新了,但是它的功能已经足够强大了。市面上很多流程图产品其实都是基于它的,它提供了一个基本完整的工程实例grapheditor,并附有源码。当然因为这个项目比较早,代码的组织不是模块化的,都是全局变量引用。作者尝试转为模块化,但没有成功,于是在其基础上,通过cdn引入vue、element-pls、axios库进行使用。这个项目是笔者花费时间最大的一个项目,因为它的代码量真的很大,需要修改的地方也很多:多语言翻译成中文,图片上传到cdn,导出功能修改(因为example的export需要配合后端代码)等等。MarkdownMarkdown的编辑器有很多,但是笔者主要是需要能够转换富文本,所以最终在markdown-nice和md中选择了markdown-nice,功能貌似更多。这也是一个基于React的项目。支持设置主题和代码主题,对公众号和知乎做一些小的适配。作者用它打出了这篇文章:Document文档其实就是富文本编辑器。开源的富文本编辑器太多了,笔者也是一头雾水,最后在tiny和ckeditor-5之间选择了tiny,具体原因忘记了,可能它的官网更好,但是怎么说呢,现在后悔了,我应该选择ckeditor-5,因为它的文档风格确实符合我的“文档”需求:以后有时间再改。tiny的界面效果如下:电子表格的开源项目并不多。我选择Luckysheet是因为它的配置。很简单,功能完全满足作者的需求,界面也很好看:PPTPPT说实话,能找到符合要求的开源项目还是挺意外的,因为常见的PPT项目有slidev、reveal.js、impress.js。我需要的显然是像电脑自带的PPT软件一样可以编辑的。早期其实也做过一个这样的:但是年久失修,功能比较简单,基本没什么实用价值。让我吃惊的项目是PPTist,这是一个基于Vue3.x的项目。它具有OfficePowerPoint的常用功能。开源项目(忽略作者自己的项目),在做的过程中也感受到了这些贡献者的无私和坚强,也感受到了自己的菜,分享给大家。