我试图通过webpack(在本例中是fusioncharts)将一个模块公开到全局范围,这样就可以通过页面内脚本直接访问它。我几乎可以一路走,但我还没能暴露
FusionCharts
直接初始化;相反,我获取模块本身
default: class FusionCharts
在里面。
我的相关网页包配置如下:
...
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正确构建
图表.js
包含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
是的,但如果是的话,我找不到。