首页 > 解决方案 > 主 D3 模块命名空间是否不会随着最前沿的子模块添加而更新?

问题描述

我正在尝试使用d3.group,这是几天前发布的 d3-array 子模块的一个非常新的补充。我正在使用 yarn/webpack 工作流程和导入语句来拉入 D3,如下所示:

import * as d3 from 'd3';

但是,当我尝试使用 时d3.group,它没有用。

console.log(d3.group)

返回未定义。

为了解决这个问题,我必须安装最新版本的 d3-array 并将其分配给一个新的命名空间。

import * as d3Array from 'd3-array';
console.log(d3Array.group)

这成功地返回了函数。

所以我的问题是,当 Bostock 或其他 D3 开发人员更新子模块时,更新不会在主要更新之前添加到主 D3 命名空间吗?每次我想使用一个真正的新功能时,是否有必要从子模块中提取?

标签: d3.js

解决方案


考虑到最新的 d3-array 不在最新的 d3 捆绑包中,并且您正在使用 webpack/yarn

您可以轻松地在 上加载模块d3.*,安装最新的模块并打包在一起,

示例: // 选择所有 d3 模块并将其保存在 d3.js // 然后将其加载到脚本中 -> 从 './d3' 导入 d3; 导入 { 选择,全选 } 从 'd3-selection' 导入 { 组 } 从 'd3-array'

    const d3 = Object.assign(
      {},
      {
        select,
        selectAll,
        group,
      }
    )
    export default d3;

参考:https ://www.giacommodebidda.com/how-to-import-d3-plugins-with-webpack/


推荐阅读