【发布时间】:2018-07-23 11:41:02
【问题描述】:
我是 D3js 的新手,在开始之前 我想了解如何管理核心和插件的版本,所以我发现自己不会被旧的不受支持的版本所困扰或使用太实验性的东西。
如果我查看发布历史记录,我会发现 v4 在 Jun 2016 (https://github.com/d3/d3/releases?after=v4.1.0) 和 v5 在 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,当时和 2017 年 4 月的答案仍然无法正常工作(尽管 it was already v4.8 at the time,在 v4 发布近 1 年后):
所以看来v4/v5 是与v3 完全不同的分支,甚至不向后兼容。
因此我的问题是:
-
v5与v3向后兼容到什么程度? -
v3还能支持多长时间?
【问题讨论】:
-
该画廊中的大多数示例都是由 D3 创建者 Mike Bostock 制作的。他曾经说过,他计划(慢慢地)将大部分示例转换为 v4(或现在的 v5),但显然这是很多工作:我们可以假设,他很忙,一些示例永远不会转换为v4/v5。但是,任何人都可以分叉这些示例并进行转换。
-
关于您的第一个问题,v5 与v3 不兼容,需要进行一些更改。当然,这取决于方法,机会很低,但您可能会偶然发现与 v5 完美配合的 v3 代码(只要该假设代码不使用比例、轴、弧、曲线、层次结构、力布局、路径、等等...)。
-
感谢您的澄清。所以如果我从现在开始我应该选择
v5对吗? (我只需要记住,大多数示例都需要适应该版本) -
第 4 版破坏了大量的 API,但大多数时候将 v3 代码转换为 v4 代码并不难。我强烈建议您使用 v5,更新是好的,而且它将使您的代码在 API 发展时更易于维护。
标签: d3.js version-control backwards-compatibility