對於g6繪圖來講,最大的感覺就是說,首先必定要熟讀文檔,g6上上手作以前,看他的例子,雖然看着簡單,可是要定製作,符合設計的話是比較難的。node
閱讀文仔細閱讀文檔後,你會知道有不少的東西,它有哪些東西能夠用,就好比這個自定義的事件來講,(例如:hover效果)一開始我是用了傳統的綁定事件來解決他,可是在讀文檔的時候才發現用這個是更簡單的。
算法
開發複雜組圖,有些坑多是不得不踩的,像這個佈局,一開始我僅僅覺得是把數圖作一個扭轉,就能夠了。可是一遇到了問題就是說扭轉之後,數據簡單看着不會出錯,數據一多他就有問題。g6更新的底層算法就是說會複製一棵樹,用舊樹位置跟新樹作對比,這個時候位置一重疊,形成衝突致使佈局衝突開發失敗,花了大筆的時間去琢磨它,越過他,例如在佈局更新階段,先扭轉回來,在扭轉回去。可是最後仍是走不通。還想過把樹圖放在組裏面進行開發,完了再用組作一個矩形變換來達到目的,文檔感受可行,可是沒有實例,也找不到相關資料,實驗了一天仍是沒有結果。完後就是想扒他的源碼,最後沒辦法使用自定義佈局,本身作數位算法,感受有時候複雜的方式感受反而感受更簡單後端
在開發數位算法的時候,個人經驗是複雜的事情必定要先把它簡化,不能直接拿着後臺返回的數據進行實驗,本身寫一些簡單的數據結構來作實驗。這樣影響的參數會變少,讓開發更簡單一些。同時對於複雜的事情必定要提早作好結構的規劃,作很差到後期會越複雜。這種樹圖算法出錯,找到問題節點完了之後判斷問題,發現哪裏寫錯了,找到算法裏面的不足是看起來就寫了一點,可是調試起來會比較費勁,因此一開始必定要用本身純淨的數據來作實驗,確保這個算法不會出問題在上真數據。就像在開發過程當中,有時候會引用後端返回給個人數據來進行實驗,這個時候就沒辦法保證這個數據是我想要的,就好比這個節點數據,我一開始是以PID是惟一的,完了之後我就用它來作這個節點的ID,出錯之後找了半天才發現是由於PID重複致使的,完了之後又加了不少的限定,來保證這個節點是惟一的,而且在後期是能夠找到的。api
同時也發現g6有一些不完善的地方,在個人開發中就發現了兩個比較明顯的問題。緩存
api失效數據結構
插件邏輯不周全佈局
引用時間插件後,自定義佈局拿不到值大數據
其餘:spa
若是兩次節點繪製是同步的,那麼很大可能致使位點錯亂插件
graph.render()
graph.changeData({nodes: newNodes, edges: newEdges});
單個節點攜帶數據過大會致使出錯
節點id重複會出現繪製錯誤,
視圖存在緩存,若是id相同,極可能不能徹底更新
大數據調試,須要一些靈活的方式