返回

从零开始构建流畅流程图编辑库

前端

前言背景

流程图是一种广泛用于各个领域的图形化表示工具,它可以帮助人们快速、直观地理解复杂流程和系统。随着技术的发展,流程图的应用场景越来越广泛,对流程图编辑工具的需求也越来越大。

为什么需要重新开发?

现有的流程图编辑工具大多存在着以下问题:

  • 功能单一: 大多数流程图编辑工具只能满足基本的需求,如创建和修改流程图,而无法满足一些高级的需求,如流程图的仿真、优化和协同编辑等。
  • 操作复杂: 大多数流程图编辑工具的操作非常复杂,学习成本高,用户需要花费大量的时间和精力才能掌握。
  • 兼容性差: 大多数流程图编辑工具的兼容性较差,不同平台和浏览器可能无法使用,这给用户带来了很大的不便。

业务需求

  • 基本功能: 创建、修改、删除流程图元素,如流程步骤、分支、合并等。
  • 高级功能: 流程图的仿真、优化和协同编辑等。
  • 易用性: 操作简单,学习成本低,用户可以快速上手。
  • 兼容性: 支持主流平台和浏览器,如Windows、macOS、Linux、Chrome、Firefox、Safari等。

强大的go.js可以完美的制作流程图功能

go.js是一个非常强大的JavaScript库,它可以用来制作流程图、组织结构图、思维导图等各种图形化图表。go.js的特点是功能强大、性能优越、可定制性强。但是,go.js也存在着一些缺点,如价格昂贵、许可证限制严格等。

受限于其license,只能舍弃

G6库也十分强大,曾以G6为底层开发过一版,但是在绘制流程图时发现G6库的性能不是很好,而且G6库的学习成本也比较高。所以,最终决定舍弃G6库,另寻他法。

技术选型

经过综合考虑,最终决定使用以下技术来开发流程图编辑库:

  • JavaScript: 作为一门通用脚本语言,JavaScript可以运行在各种平台和浏览器上,具有良好的跨平台性和兼容性。
  • HTML5: HTML5是目前最流行的网页标记语言,它提供了丰富的元素和属性,可以用来创建各种复杂的图形界面。
  • Canvas: Canvas是HTML5中的一种元素,它可以用来绘制图形和图像。Canvas的优点是性能优越,可以实现流畅的动画效果。
  • SVG: SVG是一种可缩放矢量图形格式,它可以用来创建各种复杂的图形和图像。SVG的优点是可缩放性强,可以保持图形的清晰度。

G6和go.js的比较

G6和go.js都是非常强大的JavaScript库,它们都可以用来制作流程图、组织结构图、思维导图等各种图形化图表。但是,这两个库也有着一些区别。

  • 功能: G6库的功能更加强大,它可以支持更多的图表类型,如流程图、组织结构图、思维导图、甘特图等。而go.js库的功能相对简单,它只支持流程图和组织结构图。
  • 性能: G6库的性能不如go.js库,在绘制大型图表时,G6库可能会出现卡顿现象。而go.js库的性能非常优越,即使在绘制大型图表时,也不会出现卡顿现象。
  • 学习成本: G6库的学习成本比较高,新手需要花费大量的时间和精力才能掌握。而go.js库的学习成本比较低,新手可以快速上手。
  • 价格: G6库是免费的,而go.js库是收费的。

总结

本文介绍了如何从零开始构建一个流畅的流程图编辑库。我们探讨了流程图库的必要性,其功能和优势,并提供了一些有用的技巧和示例。同时,我们研究了如何选择合适的技术,如JavaScript、HTML5、Canvas和SVG,以及如何利用G6和go.js等库来简化开发过程。