d3.js - 在 ES6 中导入和使用 d3 及其子模块的正确方法是什么?
问题描述
我正在尝试在带有 NPM 的 Vue.js 项目中使用许多 d3 包进行包管理。我试图解决我遇到的问题,但无法在那里复制问题 - 代码完全按照它应该做的那样工作。
我试图找出在 JSFiddle 中运行的代码和在我的应用程序中运行的代码之间的差异,并且(除了我没有在小提琴中运行 Vue.js 的明显事实之外)最大的一个是我如何导入我的额外图书馆。在小提琴中,我添加了来自 CDNJS 的相关库的链接,而在我的应用程序中,我正在使用 NPM 和import
. 这一切都是为了使用 运行图表dc
,它建立在许多d3
功能之上。我对图表组件的完整导入是:
import dc from 'dc'
import crossfilter from 'crossfilter2'
import * as time from 'd3-time'
import * as scale from 'd3-scale'
我没有使用基本d3
模块中的任何功能。
有问题的小提琴在这里:https ://jsfiddle.net/y1qby1xc/10/
解决方案
我现在在我的 Vue 项目中使用以下结构。我正在制作一个单独的文件来导入所有需要的模块并一次将它们全部导出。
在./src/assets/d3/index.js
:
import { select, selectAll } from 'd3-selection';
import {
scaleLinear,
scaleTime,
scaleOrdinal,
schemeCategory10,
} from 'd3-scale';
import { axisTop } from 'd3-axis';
export default {
select,
selectAll,
scaleLinear,
scaleTime,
scaleOrdinal,
schemeCategory10,
axisTop,
};
然后我将所有内容导入到我的组件中,我可以使用所有带有d3
前缀的函数:d3.select
等d3.selectAll
。
在./src/components/MyComponent.vue
:
<template>
</template>
<script>
import d3 from '@/assets/d3';
export default {
data() {
return {
};
},
};
</script>
推荐阅读
- sql - 在 SQL 中创建 Excel 日期时间序列/小数部分值
- c++ - 跳转到输入坐标定义的控制台屏幕位置
- kubernetes - gitlab runner cache“找不到缓存工厂”
- php - 即使 PHP 中有超过 12 个日期,您能否显示两个日期之间的月差?
- sql-server - 尝试使用 SQL 身份验证登录失败。服务器配置为 Windows 身份验证
- laravel - 在 laravel 中保留过滤器数据
- python - __iterm2_precmd:type:50: bad option: -t 在重新安装 Anaconda 并执行“source”之后
- assembly - 堆栈对齐 macos 64 位程序集(nasm)
- java - 如果在删除之前使用例如 Spring 实体存在,首先检查数据库是否有意义
- php - 在现有数据库中注册 Laravel