d3v4.0自定义构建,带有ES6模块



我正在试用d3v4.0的alpha,并试图在jspm设置中创建一个自定义构建。我似乎无法理解新的模块化构建是如何工作的。

如果我想从模块导入命名导出,即d3请求中的json,我可以执行以下操作:通过jspm/npm安装模块后的import {json} from "d3-request";

如果我想安装整个库,同样是import d3 from "d3";

如果我想安装多个模块和命名导出,并在d3命名空间下让它们都可用(即,在d3请求的同时导入d3形状,并在同一个d3全局中访问d3.json和d3.line),那么正确的语法是什么?

我意识到,当使用这些模块的独立版本时,会导出全局,如d3_shape。在将这些模块与我的应用程序捆绑在一起时,是否打算为每个模块提供单独的名称空间?

I相信计划是在D34.0完成后提供整个库的ES6构建,以及自定义构建生成器,此时您将能够做到这一点:

import { json, line } from 'd3';
json( 'file.json', ( err, data ) => ... );

(请注意,执行此操作时没有d3变量–直接使用命名导入。)

目前,d3软件包的版本是3,它没有ES6版本,因此同时有两个选项——安装所需的模块并从中单独导入。。。

import { json } from 'd3-request';
import { line } from 'd3-shape';
json( 'file.json', ( err, data ) => ... );

或者创建自己的自定义构建:

// src/my-d3.js
export { json } from 'd3-request';
export { line } from 'd3-shape';
// src/app.js
import { json, line } from './my-d3.js';

其中,我更喜欢第一种——它更明确,而且可能不太可能导致未使用的代码最终出现在您的构建中。

最新更新