2013-11-20

viz.js 使用小心得

上一篇提到了我最後選擇了 viz.js,經過一段被炸飛的使用時間之後,來補充一些實戰上的其他心得…… [淚目]

  1. 用 viz.js 來 render DOT 碼時,如果 label 有 \,畫面上不會顯示出來。
  2. DOT 碼中有中文(或著說非 ASCII),在 GWT 當中執行時會一直炸 parse 錯誤。原本以為是 GWT 的問題、因為把同樣的 DOT 碼用純 HTML 來跑就(幾乎)沒遇到問題。後來爬了一下 viz.js 的 issue,發現這個 issue 14,原來這是一個已知的 bug。後頭有一個日本人提供了一個堪稱我看過最詭異的 work around。假如原本的 JS 要這樣寫:

    var dot = DOT_GENERATOR();
    var svg = Viz(dot, "svg");
    

    現在要改成:

    var dot = DOT_GENERATOR();
    var svg = Viz(dot + new Array(dot.lengh).join(" "), "svg");
    

    真的有效,但是也真 WTF 的不明所以 [死]。

  3. 有一個 repo RiveraGroup/viz.js 是從 viz.js fork 出去的。它有直接提供 viz.js 檔、README.MD 還有列出可以 support 哪些 GraphViz 的 layout、以及輸出的 format。不過在不嚴謹的測試之下,發現 RiveraGroup 的版本跟 viz.js 已經有所不同,至少 viz.js 不支援 fdp 這個 layout(例如這個範例),但是 RiveraGroup 的版本有(每次執行的結果還不一樣 ==”)。
  4. 承上,viz.jsViz() 可以接收三種 format,分別是:

    • dot
    • svg
    • ps

    在 browser 的環境下,好像只有 svg 這個 format 比較有意義……

至於其他關於 DOT 語言的炸點…… 就是另外一個故事了 [淚目]