g6 开发经验

对于g6绘图来说,最大的感受就是说,首先一定要熟读文档,g6上上手做之前,看他的例子,虽然看着简单,但是要定制做,符合设计的话是比较难的。

阅读文仔细阅读文档后,你会知道有很多的东西,它有哪些东西可以用,就比如这个自定义的事件来说,(例如:hover效果)一开始我是用了传统的绑定事件来解决他,但是在读文档的时候才发现用这个是更简单的。
g6 开发经验_第1张图片

开发复杂组图,有些坑可能是不得不踩的,像这个布局,一开始我仅仅以为是把数图做一个扭转,就可以了。但是一遇到了问题就是说扭转以后,数据简单看着不会出错,数据一多他就有问题。g6更新的底层算法就是说会复制一棵树,用旧树位置跟新树做对比,这个时候位置一重叠,造成冲突导致布局冲突开发失败,花了大笔的时间去琢磨它,越过他,例如在布局更新阶段,先扭转回来,在扭转回去。但是最后还是走不通。还想过把树图放在组里面进行开发,完了再用组做一个矩形变换来达到目的,文档感觉可行,但是没有实例,也找不到相关资料,实验了一天还是没有结果。完后就是想扒他的源码,最后没办法使用自定义布局,自己做数位算法,感觉有时候复杂的方式感觉反而感觉更简单

在开发数位算法的时候,我的经验是复杂的事情一定要先把它简化,不能直接拿着后台返回的数据进行实验,自己写一些简单的数据结构来做实验。这样影响的参数会变少,让开发更简单一些。同时对于复杂的事情一定要提前做好结构的规划,做不好到后期会越复杂。这种树图算法出错,找到问题节点完了以后判断问题,发现哪里写错了,找到算法里面的不足是看起来就写了一点,但是调试起来会比较费劲,所以一开始一定要用自己纯净的数据来做实验,确保这个算法不会出问题在上真数据。就像在开发过程中,有时候会引用后端返回给我的数据来进行实验,这个时候就没办法保证这个数据是我想要的,就比如这个节点数据,我一开始是以PID是唯一的,完了以后我就用它来做这个节点的ID,出错以后找了半天才发现是因为PID重复导致的,完了以后又加了很多的限定,来保证这个节点是唯一的,并且在后期是可以找到的。

同时也发现g6有一些不完善的地方,在我的开发中就发现了两个比较明显的问题。

api失效

g6 开发经验_第2张图片

插件逻辑不周全

引用时间插件后,自定义布局拿不到值

g6 开发经验_第3张图片

其他:

如果两次节点绘制是同步的,那么很大可能导致位点错乱

graph.render()

 graph.changeData({nodes: newNodes, edges: newEdges});

g6 开发经验_第4张图片

单个节点携带数据过大会导致出错

g6 开发经验_第5张图片

节点id重复会出现绘制错误,

视图存在缓存,如果id相同,很可能不能完全更新

g6 开发经验_第6张图片

大数据调试,需要一些灵活的方式

g6 开发经验_第7张图片

你可能感兴趣的:(前端,可视化)