本文從使用角度入手,循序漸進的講述 DrawIO 是什麼,為什麼要基於 DrawIO 進行二次開發以及 DrawIO 二次開發的核心技術細節並抽象出瞭一套通用二開架構,因此文章內容較長,不同階段的讀者可以根據需求進行閱讀。本文整體結構如下:
1 - DrawIO 二次開發需求背景 (一入 DrawIO 深似海)
2 - DrawIO 是什麼以及使用方法簡介 (揭開 DrawIO 的神秘面紗)
3 - DrawIO 二次開發的準備階段 (山重水復疑無路,老淚縱橫的跑通 DrawIO 代碼)
4 - DrawIO 二次開發的技術細節 (柳暗花明又一村,掌握 DrawIO 核心二開代碼)
5 - DrawIO 二次開發架構詳解 (三省吾身,抽象出通用的 DrawIO 開發架構)
對於繪制各種圖表,諸如流程圖、原型圖、拓撲圖、UML 圖以及思維導圖等等,你是不是還在用微軟功能龐大但必須下載客戶端同時體積也很龐大的 Visio?抑或是你還在用 ProcessOn 免費版,十張圖緊緊巴巴來回替換繪制,畫完這張圖下載下來刪除再重新畫另一張(當然如果你是氪金玩傢,那麼我隻能說,大佬開心就好~)?在上述諸多問題的背景之下有瞭這篇文章,看完過後希望不同讀者能夠得到相應收獲。
扯得這麼高大上,弄的都有些不好意思瞭。重新闡述一下原因就是目前筆者在雲音樂主要負責的工作是提升研發線效率,某天產品和後端同學提出瞭一個需求,大體上意思就是團隊需要一個內部圖表工具,這個圖表工具能和現今公司工作流串聯起來完成流程閉環,因為目前的工作模式就是產品/研發用 ProcessOn 或者其他繪圖工具繪制圖表後,截圖/保存到本地然後再進行粘貼,因為 ProcessOn 有空間限制並且也不必所有人都開會員 ,因此還不如幹脆就內部搞一個瞭。
基於上述官方/非官方種種原因,筆者開始著手調研這個內部圖表系統的搭建,觀望一圈之後最終確認技術選型 —— 以 DrawIO 為基礎進行二次開發。
目前來說這個繪圖系統的基本功能(繪制/存取等)已經開發完成並內測使用中,並且筆者還為網站起瞭一個高端大氣上檔次的名字 —— Overmind-X Graph,一起來看看網站現階段效果:
既然是基於 DrawIO 進行二開,首先就來瞭解一下 DrawIO 到底是什麼,跟著筆者視角先去 DrawIO 官網去看一圈,官網首頁截圖如下所示:
簡要來說DrawIO 是一個支持繪制各種形式圖表並且支持多位置存儲能力的網站和工具。繪制圖表的功能就不多說瞭,這也是 DrawIO 自身的核心功能,這裡著重介紹一下 DrawIO 的多位置存儲能力,通過 DrawIO 繪制的圖表可以存在網絡上的很多地方,比如:瀏覽器緩存、本機文件夾、遠程存儲(Github、Gitlab 和 Google Drive 等)。存儲瀏覽器和本機文件夾很簡單不做介紹,這裡以 Github 為例簡單講解一下通過 DrawIO 繪制的圖表如何進行遠程存儲。
這裡筆者新建瞭一個名為 drawio-folder 的倉庫,裡面隻有一個 README.md
文件,如下圖所示:
ca994415115d585916908a1d8fb8c371
然後從官網點擊 Start 按鈕進入繪圖頁面,第一次進入頁面不出意外會出現一個如下圖所示選擇存儲空間的選項,然後選擇 Github(其他遠程存儲原理一樣)。
點擊選擇存儲到 Github 倉庫,然後選擇新建一個圖表,命名之後點擊新建 Create 按鈕完成圖表的創建。
圖標創建成功後,會出現一個授權登錄的彈窗,授權登錄過後 DrawIO 就能獲取到賬戶下的所有倉庫信息,選擇剛才創建的 drawio-folder 倉庫,然後進行圖表的繪制。
143c38ba981c9135d4fd576cd4ffaedd
繪制過程中,每一次的保存操作,都會創建一條 commit message
,就相當於正常的倉庫修改並提交,如下圖所示:
c71cf6b5ce73e657eccb1cce774bfbfa
當一次圖表繪制完成並保存後,可以去 Github 倉庫看看是否存儲成功。
可以看到,剛才創建的圖表已經成功存儲到瞭 Github 倉庫,非常的便捷,基本上就等於你已經有瞭一個無限制的圖表雲盤一樣。
至此相信大傢應該已經瞭解瞭 DrawIO 如何繪圖以及它強大的存儲功能,在文章的開頭提到過,如果你是一個單純的使用者,那麼文章讀到這裡已經足夠瞭,你已經擁有瞭一個免費且強大的繪圖工具(不需要開通會員不需要註冊也沒有繪制數限制)以及很多類型的無限存儲空間,相比還要收費的 Some Apps 它不香嗎?
既然 DrawIO 本身已經這麼香瞭,為啥還要進行二開呢?在這簡單總結幾點為什麼要進行二開或者可能需要進行二開的原因:
這裡就不多說啥瞭,其實 DrawIO 的開發還真就是完全屬於前端范疇,所以各位前端同學如果遇到類似的需求,就迎難而上吧~
至於為啥要用到這倆,後面構建部署過程會介紹到,因為前端開發同學的電腦裡大概率不會安裝這倆,所以這裡也簡單講一下安裝步驟。
# jdk 下載地址
http://www.oracle.com/java/technologies/javase-jdk16-downloads.htmlt
# ant 下載地址
http://ant.apache.org/bindownload.cgi
下一篇