我和D3.js很相似。
我在Angular项目中使用它,但我正在考虑摆脱它。也许我错过了什么。
我的理解是D3的优势来自于能够沿着某些数据更新DOM。这里通常是我如何使用它:
// JS Data
[{
id: 1,
name: 'Red',
is_warm: true
}, {
id: 2,
name: 'Blue',
is_warm: false
}]
// With the following code:
colors = d3.select($element.find('ul')[0]).selectAll('li.color').data(colorArray, function(d){ return d.id }).enter();
colors.text(function(d) { return d.name }).classed('color', true).classed('warm', function(d) { return d.is_warm; });
<!-- Generates -->
<ul>
<li class="color warm">Red</li>
<li class="color">Red</li>
</ul>
但我肯定可以对AngularJs做同样的事情:
$scope.colors = [{
id: 1,
name: 'Red',
is_warm: true
}, {
id: 2,
name: 'Blue',
is_warm: false
}]
<ul>
<li ng-repeat="color in colors" class="color" ng-class="color.is_warm ? 'warm' : ''"></li>
</ul>
哪个会产生或多或少相同的代码。
那么在AngularJs之上使用D3的重点是什么?
根据我的理解,主要区别在于 时重绘:
$digest
周期内,如果客户端CPU很少,这可能会很慢。我是对的吗?这是唯一的区别吗?是否可以手动设置AngularJs重绘频率?为什么使用D3和AngularJs呢?
由于
答案 0 :(得分:1)
要真正回答这个问题:
您无法以这种方式比较Angular和D3。 Angular是一个应用程序框架,而D3是一个数据表示框架。 D3可以操纵DOM的事实纯粹是因为它需要某种方式来操纵DOM来显示数据。
另一方面,Angular是MVC应用程序的框架,不仅限于显示数据,而且比D3更加通用化。它们都是图书馆,相似之处在于它们;它们用于不同的目的,并做不同的工作。 D3实现了数据(其中一种方式是通过DOM),其中,Angular创建了丰富的Web应用程序。