【问题标题】:Vue, Webpack, DC.js, and Finally CrossfilterVue、Webpack、DC.js 和最后的 Crossfilter
【发布时间】:2016-08-31 20:26:16
【问题描述】:

我正在尝试构建一个概念验证应用程序,该应用程序使用 DC.js 引入一些静态数据并将其可视化。我们决定使用 Vue.js 作为我们的框架,使用 Webpack 作为我们的构建工具。我在基本配置中包含了 D3.js、Crossfilter 和 DC.js。

resolve: {
    extensions: ['', '.js', '.vue'],
    fallback: [path.join(__dirname, '../node_modules')],
    alias: {
      'src': path.resolve(__dirname, '../src'),
      'assets': path.resolve(__dirname, '../src/assets'),
      'components': path.resolve(__dirname, '../src/components'),
      'd3': path.resolve(__dirname, '../bower_components/d3/d3.min.js'),
      'crossfilter': path.resolve(__dirname, '../bower_components/crossfilter/crossfilter.min.js'),
      'dc': path.resolve(__dirname, '../bower_components/dcjs/dc.js') // using unminified version to look at exactly where the error is coming from
    }
}

并且在文件中带有像这样的实际可视化组件。

var d3 = require('d3')
var cf = require('crossfilter')
var crossfilter = cf.crossfilter
var dc = require('dc')

但是,DC.js 需要 crossfilter 才能工作,并且它会挂在 DC.js 上下文中对 crossfilter 的调用的第一个实例上。此外,在我加载页面后,我无法再在控制台中访问crossfilter,但我可以访问D3。是什么将 D3.js 作为全局需求引入而不是将交叉过滤器作为一个整体引入?

我在这里忽略了一些配置吗?

【问题讨论】:

  • 您可以使用{externals: 'crossfilter': 'crossfilter'} 并将bower_components 添加到您的解析目录列表(webpack.github.io/docs/…) 中吗?

标签: javascript d3.js webpack crossfilter


【解决方案1】:

所以让 Crossfilter 和 DC.js 与 webpack 和 vue 一起工作是可能的。我必须对 DC.js 源代码进行修改才能使其正常工作。

  1. webpack.base.conf.js 中,您需要将以下内容添加到模块导出中。

    plugins: [ new webpack.ProvidePlugin({ d3: 'd3', crossfilter: 'crossfilter', dc: 'dc' }) ]

这使得这三个库在全球范围内可用。无需他们。

  1. 如果您像我一样使用 ESlint,则需要将以下内容添加到 eslintrc.js 以使其忽略您不需要这些文件的事实。

    'globals': { 'd3': true, 'dc': true, 'crossfilter': true }

  2. 最后,在'use strict'; 声明之后的 DC.js 中,您需要设置交叉过滤器。

    var crossfilter = crossfilter.crossfilter;

虽然这不是一个完美的答案,但至少让我能够呈现图表。现在,如果我能弄清楚如何将全局 Crossfilter 包重新定义为 crossfilter.crossfilter,我会觉得我有一个完整的答案。

【讨论】:

  • 您能否发布您对 dc.js 所做的更改以使用 Vuejs。可以把示例项目贴在 jsfiddle 上吗?
猜你喜欢
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多