如何评价 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里借鉴到哪些思想呢?

2017年9月17日 2 条回复 973 次浏览

发起人:彭猫 初入职场

¥

回复 ( 2 )

  1. Twiknight
    理由
    举报 取消

    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组件。

  2. 匿名用户
    理由
    举报 取消

    我想知道d3.js有用虚拟dom技术吗?

我来回答

Captcha 点击图片更换验证码