Webpack-动态导入类 [英] Webpack - Dynamically importing a class

查看:44
本文介绍了Webpack-动态导入类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在满足路由器条件时动态导入一个类.

I'm trying to dynamically import a class when a router condition is met.

导入标准(非类)模块没有问题,因为它可以按预期工作:

I have no problems importing a standard (non-class) module, as this works as expected:

Router.on({
    '/:region/map': (params) => {
      import("Controllers/map.js" /* webpackChunkName: "map" */).then(({map}) => {
        map.initialise(params.region);
      });
    }
});

但是尝试对类进行相同操作无法正常工作.

But trying to do the same with a class is not working as expected.

Router.on({
    '/:region/map': (params) => {
      import("Controllers/map.js" /* webpackChunkName: "map" */).then(Map => {
        Map.initialise(params.region);
      });
    }
});

哪个失败"e.initialise不是一个函数";

Which fails 'e.initialise is not a function';

我还尝试使用 new 关键字实例化该类:

I also try to instantiate the class by using the new keyword:

Router.on({
    '/:region/map': (params) => {
      import("Controllers/map.js" /* webpackChunkName: "map" */).then(Map => {
        const MapClass = new Map();
        MapClass.initialise(params.region);
      });
    }
});

但仍然没有喜悦!

在这种情况下如何动态导入类?

How do I dynamically import a class in this scenario?

更新:

这是我的Map模块(作为非类模块),可以正常工作:

This is my Map module, as a non-class module, which works:

var map = {
    initialise(region) {
        console.log("Map initialised for region: " + region);
    }
}
export { map };

这是一个相同的模块,但作为一个类:

This is the same module but as a Class:

export default class Map {
    constructor() {
        //
    }
    initialise(region) {
        console.log("Map initialised for region: " + region);
    }
}

推荐答案

  class Map {
    constructor() {
        //
    }
    initialise(region) {
        console.log("Map initialised for region: " + region);
    }
  } 

     export { Map }




      Router.on({
        '/:region/map': (params) => {
          import("Controllers/map.js").then(({ Map })=> {
            const MapClass = new Map();
            MapClass.initialise(params.region);
          });
        }
      });

您可以尝试上面的代码,看看您是否在控制台中获得Class

can you try the above code and see are you getting Class in console

这篇关于Webpack-动态导入类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆