Webpack是否可以轻松公开模块的默认类而不是模块本身?

时间:2018-08-30 19:02:30

标签: javascript webpack fusioncharts

我正在尝试通过Webpack(在本例中为FusionCharts)将模块公开给全局范围,以便可以通过页内脚本直接访问该模块。我几乎可以使用所有方法,但是我无法直接公开FusionCharts类。相反,我得到的是模块本身,其中包含default: class FusionCharts

我相关的Webpack配置如下:

...
module: {
    rules: [
        ...,
        { test: /core\/index\.js$/, use: ['expose-loader?FusionCharts'] }
    ]
},
plugins: [
    new webpack.ProvidePlugin({
        ...,
        FusionCharts: ['fusioncharts/core', 'default']
    })
],
...

然后我有一个charts.js文件,在一个简单的示例中,它看起来像:

import Column2D from 'fusioncharts/viz/column2d';
FusionCharts.addDep(Column2D);

Webpack正确构建了charts.js文件以包含FusionCharts库,页面上的脚本可以看到FusionCharts变量,但这是模块而不是类。

例如,页面可能具有:

<script src="/assets/charts.js"></script>
...
<script>
    $(function() {
        // would output "FusionCharts: Module"
        console.log(FusionCharts);

        // would output "class FusionCharts" (which is what I am after)
        console.log(FusionCharts.default);
    });
</script>

是否可以像这样直接公开类?我以为expose-loader可以像ProvidePlugin那样自动取消引用默认值,但是如果是这样,我找不到它。

1 个答案:

答案 0 :(得分:0)

要访问FusionCharts到您的js文件中,您需要导入FusionCharts模块才能访问所有FusionCharts属性和项,以供参考,请检查此链接-https://www.fusioncharts.com/dev/api/fusioncharts#parameters-1

此外,请查看此示例以获取详细信息-https://www.dropbox.com/s/4v5xqyxl66djr6y/fc%203.13.zip?dl=0