React 提出一個概念,讓 HTML Tag 從元件,變成一種通用介面,所以現在 React Native,讓 App 介面可以用 React 寫,react-canvas,讓 Web 可以用像 app 一樣的 Component 卻寫出用 Canvas 繪製的網頁。
而 react-art 則是把 art 移植成 React 版本,原本 art 把繪製的目的抽象化,你可用相同的 api 寫完,再決定要用 svg、canvas、vml 的某種方式繪製,由於 svg、canvas 在繪製時元素數量的多寡會對效能造成差異,這層抽象則可以免去思考這件事,雖然這 API 的設計好像沒有造成廣泛應用。
而 react-art 更絕的把輸入的 API 變成了 react component,所以你就好像寫 svg,最後卻可以輸出成 canvas,這讓我聯想到是不是未來 d3 做的事,可以直接延伸轉成 canvas 輸出?
http://mashimallow.hatenablog.com/entry/2015/02/02/225250
這有篇 svg、canvas、react 的繪製效能比較,可以明確感受到差異。所以在某種情況下是需要克服的問題。而其實我在意的是 canvas 可以解決在手機上 svg(元件)被點擊不夠準確,卻受限於 dom 瀏覽器原生的行為無法校正的障礙,所以如果可以被 canvas 繪製,這件問題可能可以被解決,雖然整個事件系統都需要被重寫過,但是在 react 的架構下感覺蠻容易解決的,這部份還在 survey 中。
雖然 d3 也有被包成方便的 d3-react-component,但底層還是 d3 的 API,如果底層被換成 react component,那整個擴充性應該會差蠻多的,就不只是接一個 library 而已了。而 d3 的作者上個月說要全職開發新的視覺化工具,所以這領域感覺還有很多事正要發生,不曉得視覺化工具的未來會怎麼發展呢~拭目以待…
I’m leaving @nytgraphics to work full-time on visualization tools!
— Mike Bostock (@mbostock) 2015 5月 4日
相關連結:
- http://10consulting.com/2014/02/19/d3-plus-reactjs-for-charting
- https://github.com/facebook/react/issues/782
- http://browniefed.com/blog/categories/react-art/