分享
如何评价 D3.js 这个框架?
D3.js – Data-Driven Documents 这个框架发布于2011年。从当时的眼光来看,利用Data Join(Thinking with Joins)来完成『DOM结点』与『数据』之间的更新好像还是挺先进的。另外,可以直接操作SVG DOM对象也是 D3 与其他『高级』Visualization框架(例如highchart,protovis)不同的卖点之一。将近4年过去了,前端技术有了些变化,MVVM、Web Component、Virtual DOM似乎是目前的趋势。我不太了解d3.js的实现机制,但感觉它的Data Join与Virtual DOM(React)似乎有点像(利用局部更新来优化性能)。不知道d3.js能否从这些最新的技术趋势中有所借鉴呢?或者我们能否从d3.js里借鉴到哪些思想呢?
回复 ( 2 )
d3.js你看成是svg的jQuery就行了。
d3.js的所有操作都是真实的dom操作,这和React的vdom完全是两个思路。
当然,d3.js也有可以先计算节点属性,最后挂上dom树的用法,只不过不常用。
操作SVG dom并不是什么了不起的,任何前端程序员操作都可以再短时间内学会操作SVG。
jQuery式的操作,在今天也不是什么先进的东西。
更何况d3的选择器,在我看来,并不是最适合它的交互方式。
d3厉害的地方在于它建立了一整套数据到SVG属性的计算框架,
常用Data visualization模型,大多都可以再d3.layout里面找到,
你常用的几何图形,在d3.svg里面都有。
它为不理解SVG属性计算公式的程序员提供了一整套工具包,让你可以轻松的把数据转换成你想要的SVG属性。而不用把精力耗费在学习如何生成一条path之类的事情上。
现在看来,组件化可以解决HTML排版的很多问题,当然也可以解决SVG排版的问题。
但是,d3作为无数组Data Visualization库的基础,已经太大而不能转型了。
但是你结合d3核心的数学处理模块和最新的组件化框架,很容易就可以做出复用性和易用性都很高的SVG组件。
我想知道d3.js有用虚拟dom技术吗?