Может ли Webpack легко представить класс модуля по умолчанию, а не сам модуль?
Я пытаюсь выставить модуль через 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 ответ
Для доступа к FusionCharts в ваш файл js вам необходимо импортировать модуль FusionCharts, чтобы получить доступ ко всем свойствам и элементам FusionCharts, для справки проверьте эту ссылку - https://www.fusioncharts.com/dev/api/fusioncharts
Кроме того, проверьте этот образец для деталей - https://www.dropbox.com/s/4v5xqyxl66djr6y/fc%203.13.zip?dl=0