对于g6绘图来讲,最大的感觉就是说,首先必定要熟读文档,g6上上手作以前,看他的例子,虽然看着简单,可是要定制作,符合设计的话是比较难的。node
阅读文仔细阅读文档后,你会知道有不少的东西,它有哪些东西能够用,就好比这个自定义的事件来讲,(例如:hover效果)一开始我是用了传统的绑定事件来解决他,可是在读文档的时候才发现用这个是更简单的。算法
开发复杂组图,有些坑多是不得不踩的,像这个布局,一开始我仅仅觉得是把数图作一个扭转,就能够了。可是一遇到了问题就是说扭转之后,数据简单看着不会出错,数据一多他就有问题。g6更新的底层算法就是说会复制一棵树,用旧树位置跟新树作对比,这个时候位置一重叠,形成冲突致使布局冲突开发失败,花了大笔的时间去琢磨它,越过他,例如在布局更新阶段,先扭转回来,在扭转回去。可是最后仍是走不通。还想过把树图放在组里面进行开发,完了再用组作一个矩形变换来达到目的,文档感受可行,可是没有实例,也找不到相关资料,实验了一天仍是没有结果。完后就是想扒他的源码,最后没办法使用自定义布局,本身作数位算法,感受有时候复杂的方式感受反而感受更简单后端
在开发数位算法的时候,个人经验是复杂的事情必定要先把它简化,不能直接拿着后台返回的数据进行实验,本身写一些简单的数据结构来作实验。这样影响的参数会变少,让开发更简单一些。同时对于复杂的事情必定要提早作好结构的规划,作很差到后期会越复杂。这种树图算法出错,找到问题节点完了之后判断问题,发现哪里写错了,找到算法里面的不足是看起来就写了一点,可是调试起来会比较费劲,因此一开始必定要用本身纯净的数据来作实验,确保这个算法不会出问题在上真数据。就像在开发过程当中,有时候会引用后端返回给个人数据来进行实验,这个时候就没办法保证这个数据是我想要的,就好比这个节点数据,我一开始是以PID是惟一的,完了之后我就用它来作这个节点的ID,出错之后找了半天才发现是由于PID重复致使的,完了之后又加了不少的限定,来保证这个节点是惟一的,而且在后期是能够找到的。api
同时也发现g6有一些不完善的地方,在个人开发中就发现了两个比较明显的问题。缓存
api失效数据结构
插件逻辑不周全布局
引用时间插件后,自定义布局拿不到值大数据
其余:spa
若是两次节点绘制是同步的,那么很大可能致使位点错乱插件
graph.render()
graph.changeData({nodes: newNodes, edges: newEdges});
单个节点携带数据过大会致使出错
节点id重复会出现绘制错误,
视图存在缓存,若是id相同,极可能不能彻底更新
大数据调试,须要一些灵活的方式