前端拓扑图插件选型对比

前端生成拓扑图、关系图、流程图的 JavaScript 插件有很多,各种编辑器五法八门。

本文对比各插件的优缺点,为选型提供一些参考。

前言

目标:

实现一个网络拓扑图的可视化界面

可通过托拉拽的方式对图进行编辑(节点、连线、属性)

能跟后台数据进行动态绑定

具有告警功能

其它一些细节

为什么选择第三方插件:主要还是省事,避免重复造轮子。如果要自己手写实现一个,开发时间周期较长;作为学习的话,可以投入这方面的精力。

既然决定用插件了,肯定要有个选型的过程。下面先列举下我对市面上主要几种插件的选型对比。

免费插件

1. jTopo

简介:jTopo(Javascript Topology library)是一款完全基于 HTML5 Canvas 的关系、拓扑图形化界面开发工具包。

背景:个人、国产

官网:http://www.jtopo.com/

示例:https://github.com/wenyuan/jtopo_topology

优点免费

轻量

无明显性能问题

功能丰富,支持各种自定义操作

国产,文档简单,上手容易

缺点未开放源代码,如需做功能增强,对着混淆后的 js 代码做修改比较费时间

2015 年就停更了,作者在 2019 年表示正在准备新版本,当前进度未知

有一些 bug(比如自动布局)

不是采用模块化编程的,在现代化框架(比如 Vue.js)中使用比较麻烦(但可以实现)

建议小项目中可以使用,大型项目不建议

新手使用,可以提高自己的 JavaScript 功底

2. Vis.js

简介:Vis.js 基于 HTML5 Canvas 开发的动态可视化库。该库被设计为易于使用,处理大量的动态数据,并支持对数据的操作和交互。

背景:Almende B.V、国外

官网:https://visjs.org/

示例:https://visjs.github.io/vis-network/examples/

优点开源免费

无明显性能问题

功能丰富,支持各种自定义操作

支持自动布局(防碰撞算法)

缺点需要投入一些时间通读文档,英文不好的人会比较费力

自带的连线样式中没有折线的样式

建议先搞清楚 vis 中的数据结构 DataSet,再入手使用

耐心看文档,其实文档写的挺好的

3. AntV G6

简介:G6 是一个图可视化引擎。它提供了图的绘制、布局、分析、交互、动画等图可视化的基础能力。

背景:蚂蚁金服 AntV、国产

官网:https://antv.vision/zh

示例:https://github.com/wenyuan/cceditor

优点开源免费

上手简单,可扩展性强

功能丰富,支持各种自定义操作

由蚂蚁金服 AntV 团队开发,从维护性和生态圈角度考虑相对有保障

支持自动布局(早期借助 d3-force 实现,后期已经被内部支持)

缺点有性能问题(> 200 个网元单位)

文档易用性一般(早期托管在语雀时,缺少全文搜索功能)

有时候文档和版本会脱节(可以理解,问题不大)

建议大厂团队开发维护,后期有保障,大小项目都可以使用

可以学习里面的一些编程思想和技巧

4. jsPlumb

优点开源免费

功能丰富,支持各种自定义操作

缺点demo 过于简单

多条线时可能会叠在一起

从 demo 来看感受不到可以从哪开始连线

建议感兴趣的可以尝试下

5. JointJs

简介:JointJS 是一个开源前端框架,支持绘制各种各样的流程图、工作流图等。Rappid 是 Joint 的商业版,提供了一些更强的插件。

背景:公司、国外

官网:https://www.jointjs.com/

优点连线可设置项较为全面

原生支持拖拽和缩放

线可以手动添加转折点

有根据已添加点和线自动布局功能

扩展相对容易

缺点对于线的交互方式有点反直觉

demo 上有 bug,修改了信息不刷新

demo 的流程图不是以像素为基本单位,拖拽会感觉卡顿

纯英文文档,有的人会觉得读起来费力

建议感兴趣的可以尝试下

6. D3

特点:大都靠自己实现

7. ECharts

优点上手非常简单

缺点扩展性弱(毕竟不是专做图编辑器的,关系图只是 ECharts 中的一项)

建议可以用在定制化的需求中,不需要拖拉拽等功能

8. Le5le-topology

简介:Le5le-topology 是一个可视化在线绘图工具,使用 Canvas + Typescript。支持 topology, UML、微服务架构、动态流量、SCADA 场景等。

背景:个人、国产

官网:http://topology.le5le.com/

仓库:https://github.com/le5le-com/topology

优点开源免费

支持的图很多

技术比较新(Typescript)

开箱即用,几乎不用额外开发成本

缺点个人开发的,2019 年起作者在各大网站推广,持续维护性和生态圈尚不成熟

建议再观察两年,看作者是否在持续稳定发展,或者是否会形成开发团队

付费插件

1. hightopo优点省事

支持 3D 图

缺点贵

建议有预算的团队可以考虑

2. Qunee优点省事

有一定颜值

缺点贵

对普通需求来说,有些功能显得臃肿

不利于二开,需要事件扩展时如果原生不支持可能会非常麻烦(不过既然花钱了,应该可以联系厂家定制)

建议有预算的团队可以考虑

开发历程

选型阶段主要是编写一些 Demo 级别的代码,最终采用了三种插件来实现较为完整的功能,分别是 Vis.js,jTopo,和 AntV G6。这三种插件都较好地实现了我需要的功能,但也有一些细微的坑。

第一版是 Vis.js 阶段,花了挺多时间研究文档,功能是实现了,最终考虑到扩展性和颜值,才有了第二版。

第二版是 jTopo 阶段,当时用了很短的时间实现了功能,不过由于官方文档缺失一些内容,以及对功能有一些额外的需求(比如节点上我想绑定对象类型的属性),对着混淆后的“源码”一路摸爬滚打,增删改查,很费心力。针对这个插件的完整 Demo 以及补充文档我开源了一个 GitHub repo,感兴趣的可以查看:jtopo_topology

第三版是 AntV G6 阶段,由蚂蚁金服团队开发的。第一次了解到它是在开源中国上看到了一篇推文,一下子就心动了。当时 G6 处于 1.x 和 2.x 两大版本交替期间,文档是托管在语雀上的,最大的缺点是文档的滞后,加上语雀那个时候还不够完善,阅读体验不是很好,查询起来比较费时。到了 G6 2.x 阶段,对文档比较熟悉了,所以用起来相对得心应手,这个时候最大的瓶颈就是性能问题,所以一直停留在 Demo 阶段。

在今年过年时候,我看到 AntV G6 发布了 3.x 版本,做出了 breaking change,那段时间升级后,基本上是一边找 bug 一边提 issue(这里要感谢 G6 团队,对 issue 的响应和处理非常快 )。这个版本可以说是相对成熟了,不管是功能还是性能,都得到了增强。后来我也开源了一个 GitHub repo,感兴趣的可以查看:cceditor

经过了三次迭代,目前使用的插件是 AntV G6,在一些不需要即时编辑的场景下,我会采用 Echarts 的关系图组件,也相对容易上手。

感受

这两年在各大论坛和交流群,发现图可视化和图编辑器的需求越来越多,也踊跃出很多插件开发者的开源项目,譬如 Le5le-topology,就是一款由个人(小团队)领衔开发的产品化编辑器,之所以说是产品化,因为它集成了很多解决方案,可以说是开箱即用了。相信在可视化这个领域,会不断涌现出优秀的作品,对开发者而言,自然少不了可以借鉴和学习的地方。

最后

市面上有很多同类的插件,以上只是我调研的一部分,在选型对比中,肯定也会有疏漏,如果有其他想法,欢迎在评论区留言!

前端关系图谱插件_前端拓扑图插件选型对比相关推荐

  1. 知识图谱前端插件_前端学习曲线原来越陡,说说我的学习经历

    初学前端时,基本就是三大件:HTML+CSS+JavaScript,结合万能的jQuery就可以搭建出功能丰富.易于维护(自己感觉)的前端网站.进阶一下就是自己基于jQuery写一写插件,看着自己写的 ...

  2. 前端关系图谱插件_智游告诉你,前端开发应该学什么?

    今天接到一个咨询: 对话中这位同学提到的技能图谱,应该类似于这个: 相信大多数准备或者已经在学习前端开发的同学,都看到过或者正在按照这个类似的技能树学习. 这种技能图谱,通常是把关于前端的所有技术都罗 ...

  3. java代码自动生成的插件_如何使用插件生成自定义Java 8代码

    java代码自动生成的插件 大多数程序员讨厌的一件事就是编写样板代码. 无休止的时间花费在设置实体类和配置数据库连接上. 为了避免这种情况,您可以让Speedment Open Source之类的程序 ...

  4. lede 插件_【PS插件】神器在手不怕图片模糊

    点击蓝字 关注我们 PS插件是什么??? 插件是一种遵循一定规范的应用程序接口编写出来的程序.很多软件都有插件,ps软件插件有无数种,它可以通过不同的方式改变象素数据,以达到对图象进行抽象.艺术化的特 ...

  5. java自定义maven插件_自定义Maven插件

    第一.自定义Maven插件概述 Mojo:Maven plain Old Java Object.每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单 ...

  6. 查看文章影响因子的插件_这个浏览器插件可以智能查询SCI论文被引情况

    在查询一篇SCI文章时,我们有时候需要知道他的被引情况,看看有哪些文章引用了它,有时也需要知道施引文献在其文章中是如何描述被引文献的. 查询SCI论文被引情况可以在Web of Science中实现, ...

  7. java前端接口怎么写_前端接口怎么写

    1.java后台怎么写接口给前端使用 java后台如何给前端写使用接口,框架一开始就得考虑好的,很多都使用mvc架构往往用户登录时,用户密码符合,会允许其访问,保存登录信息,下次就不需要再次登录了,直 ...

  8. 前端关系图谱插件_js前端使用jOrgChart插件实现组织架构图的展示

    一.说明 (1)通过后台查询数据库,生成树形数组结构,返回到前台. (2)需要引入的js插件和css文件: ①jquery.jOrgChart.css ②jquery.min.js ③jquery.j ...

  9. js刻度尺插件_自制刻度尺插件-前端简易实现腾讯信用界面

    依据我现有的知识,在前端上"简易"的实现了腾讯信用的界面,同时自己自制了一个竖直的刻度尺插件,曲线的位置可以根据传入的数值动态的改变,这次主要也想总结一下关于jQuery中exte ...

  10. vue移动端用什么数据可视化插件_前端必看的数据可视化入门指南

    作者:董晓庆 蚂蚁金服体验技术部 这是一篇给大家提供数据可视化开发的入门指南,介绍了可视化要解决的问题和可以直接使用的工具,我将从下面几个方面给大家介绍,同时以阿里/蚂蚁的可视化团队和资源举例说明: ...

最新文章

  1. inline函数返回值_C++知识补充-指针,const,函数指针,指针数组,运算符重载
  2. 自动布局按钮排列平均分布
  3. 标杆课程采访补充问题
  4. 在VirtualBox里复制VDI文件[转]
  5. [html] webp与jpg、png比较,它有什么优劣势?如何选择?
  6. linux 堆的作用,闭包、对象,以及堆“族” | Linux 中国
  7. python拟合曲线求方程,曲线拟合方程python
  8. 10分钟教你从零开始python_10分钟教你从零开始学python入门
  9. 算法分析 | 分支限界算法设计之布线问题 C语言版
  10. document操作自定义属性
  11. 玩转小黑框!Terminal 入门到进阶,最后放弃!
  12. tiktok 手机验证_TikTok经过验证的硅谷正在创新
  13. linux test命令测试标志
  14. C语言指针相关——经典面试题
  15. 【机器学习】手写数字识别学习笔记(对三篇文件进行分析记录)
  16. IDC机房的PDU电源插座
  17. 【转】谈谈CICS ENQ,DEQ的使用_REDEMPTION_百度空间
  18. win10添加美式键盘_Windows10添加中文美式键盘,传统语言栏,采用ctrl+shift切换输入法...
  19. 产品经理 - 原型图设计软件
  20. windows 文件与文件夹加密

热门文章

  1. 平面设计常用标准尺寸
  2. 视频编解码器讲解-H.264、VP9、HEVC、AV1
  3. js 实现删除确认提示框
  4. 高淇Java300集
  5. 如何修复图片清晰度呢?这三款软件不要错过
  6. 软考中级网络工程师-第一章计算机网络概论(自我学习)
  7. win10手动安装打印机驱动
  8. AB PLC和ESD维护及灯的含义
  9. 【论文笔记】FlowNet:有监督的光流估计(optical flow estimation)网络
  10. 一篇关于程序员的文章