D3js版本支持政策是什么?

What is D3js version support policy?

我是 D3js 的新手,在开始之前 我想了解核心和插件的版本是如何管理的 这样我就不会陷入困境使用不受支持的旧版本或使用过于实验性的东西。

如果查看发布历史,我会发现 v4 是在 Jun 2016 (https://github.com/d3/d3/releases?after=v4.1.0) and v5 in Jan 2018 (https://github.com/d3/d3/releases?after=v5.0.1) 中引入的。

然而,当我查看图库 (https://github.com/d3/d3/wiki/Gallery) 上的 D3js 代码时,我发现大部分代码都是基于 v3,即 2 主要发布落后。

例如,如果我使用 Sankey example updated in May 2018,它仍然基于 v3,如果我尝试用 v5 替换它,它就会崩溃。

另一个例子:someone had an issue with v4 back in Feb 2017, and the answer at the time and in April 2017 it was still not working (despite it was already v4.8 at the time,在 v4) 发布近 1 年后:

所以 v4/v5 似乎是与 v3 完全不同的分支,甚至不向后兼容。

因此我的问题是:

D3v3 schemeCategory20[bc] 在 v4(??) 和 v5 中不可用。

使用 v3 源代码中的颜色编号并将它们转换为我们可以在 v5 中使用的十六进制等价物

var colors = d3.scaleOrdinal(d3.schemeCategory20b);

小片段

function d3_rgbHexString(value) { return "#" + (0x1000000 + value).toString(16).substring(1); }
d3.schemeCategory20  = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbHexString);
d3.schemeCategory20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbHexString);
d3.schemeCategory20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbHexString);

将评论合并为 1 个综合答案:

一般哲学
看起来,鉴于 D3 创建者是 creating/maintaining the library mostly by himself,没有足够的资源来设计具有向后兼容性,也没有维护旧代码,这是可以理解的。

选择哪个版本
综上所述,重新开始时,选择最新版本似乎是最明智的选择。

向后兼容性
v3v5v5 已删除 d3-queued3-requestschemeCategory20...)存在向后不兼容的更改。因此,如果将来引入其他向后不兼容的更改,也不会令人震惊。

旧版支持
好像新版本发布的那一刻,就放弃了对旧版本的支持,所有的努力都集中在新版本上:
https://twitter.com/mbostock/status/764274097995907072