G6 是 螞蟻金服-AntV 旗下的針對關係數據的可視化引擎。從 2016 年 12 月,G6 立項至今,已通過去了 1 年半的時間。在過去的時光裏,G6 直接或間接的支持了阿里經濟體近一百個業務系統。期間得到過讚譽,也有吐槽,取得必定成就,也暴露過很多問題。半年前,咱們結合真實業務需求和業內成熟框架的特色,以及本身心裏的丁點不安分創新,開啓了 G6 2.0 的開發工做,通過精心設計,以及與諸多業務方數月共同打磨 ——html
今天,咱們懷着誠心、真心、謙卑之心,以及「 **讓人們在數據世界裏得到視覺能力 **」的夢想,爲你們奉上 G6 2.0。git
因爲這個問題被不少人問到過,因此在正式介紹 G6 2.0 的新架構,新特性以前,咱們以爲仍是有必要先介紹一下 G6 這個名字的由來。程序員
配圖來源:https://www.c82.net/blog/?id=71github
自 G6 誕生以來,公司內部由 G6 承接的業務能夠分爲兩大類,一者是 **圖分析 類,兩者是 圖編輯 類。二者雖然說都是關係型數據,但二者的側重點各不相同,前者更注重繪製的性能、佈局的質量,數據鑽取等分析體驗。後者更注重命令操做、數據讀存等人機交互的編輯體驗。因爲以前人力上和認識上的侷限,**1.0 中咱們強行把兩個場景所有揉在 G6 這一個庫裏,隨着業務的發展,G6 自身變得愈來愈臃腫,愈來愈矛盾,發展變得舉步維艱。團隊同窗通過深刻討論和思考,決定將 G6 一分爲二,由此,G6 開始了工程上的裂變:算法
幹活程序員:這絕對是一個蠻大的架構變化,甚至從工程上談得上傷筋動骨,陷入深坑,有條件要上,沒有條件創造條件也要上 ⊙﹏⊙api
2.0 中咱們除了原有的兩個基本圖項(Item),節點(Node),邊(Edge),還引入了另外兩個基本元素:組(Group),導引(Guide)。至此,咱們能夠基於 G6 在思惟徹底不饒的狀況下去畫任何你想畫的圖。(意味着之後你能夠不再用偷換概念的去用節點模擬一個組,模擬一個背景,或其它什麼東西。)markdown
G6 1.0 中節點和邊位於兩個圖層,這個時候意味着,你只能讓全部邊都在節點上方或者都在下方。2.0 中咱們將節點和邊放在了同一個圖層,這意味這你能夠任意控制不一樣邊和節點間的層疊關係。網絡
隨着 2.0 架構的升級,G6 沉爲了底層的關係圖可視化引擎,其自己不提供(不多提供)上層建築(節點類型、邊類型、基礎交互、佈局算法)的具體實現,只提供一套高可擴展的機制。得益這次的減負,G6 優化了大量接口設計,若是用過 1.0,相信你們能明顯感覺到接口更精簡,更自洽,概念更清晰。詳見:連接 。架構
爲了更好的沉澱一些中等程度的、具體場景相關的工做,以及爲了和社區更好的融合造成協力,G6 2.0 中咱們開放了插件的擴展。詳見:連接 。框架
配圖來源:https://www.google.com.hk/search
在決定了 G6 將來上面會長 G6-Analyser 和 G6-Editor 兩個獨立項目後,咱們深入的明白,光靠工程是作很差上面兩件事情的,咱們須要更多與其它專業領域深度融合。
此次,咱們很高興的告訴你們,今天除了開源 G6 ,還會開放取得了階段性成果的 G6-Editor ! 詳見:連接** 。**
數據可視化可能一開始就跟美是分不開,並且咱們又在 UED 部門,因此咱們首先會想到和專業的設計同窗深度融合。本次 G6-Editor 做爲一個相對上層的中間件,其對外輸出的一半是工程,另外一半是設計。你們也許很難想象,爲何設計佔了如此份量大,看完這篇 G6-Editor 交互設計沉思錄 ,你們應能窺得一斑。
爲了不 G6-Analyser 和 G6-Editor 成爲工程師閉門造車的產物。在打造這兩個技術產品時,咱們會和內部大量的商業產品深刻合做,對各個交互細節反覆推敲。最終將通過成熟的思考的結論內化到 G6 技術棧。
產品的深度合做,使得咱們更有可能打造精品,併爲將來打造開箱即用 圖分析 與 圖編輯 中間件打下堅實基礎。
幾經努力 G6 終於也走上了 **開源 之路,心中小辛酸根本難掩心裏深處的喜悅。但願開源以後能更好的回饋社區,更好的從社區中汲取營養,但願你們在使用過程當中多看文檔,善研代碼,勤提PR,互幫互助,提有深度的問題,有建設性的建議。**期待與你們共同努力,共同成長,共同進步~!
github:github.com/antvis/g6
夾帶幾個私貨:
—— AntV / G6