有条件地在ES6中导入模块

时间:2019-01-22 15:01:54

标签: javascript reactjs webpack import rollup

我正在为React开发带有免费和专业组件的库,并具有用于生产的汇总和用于开发人员的webpack。我想重用一个组件,但免费版本的变体要少一些。到目前为止,下面的代码一直有效,但是如果我们考虑使用汇总功能支持ssr和树状摇动,则必须使用es6导入(至少据我所知)。 有什么想法如何导入模块(如果存在)->如果不存在-导入另一个模块?

let DropdownMenuComponent;
try {
  DropdownMenuComponent = require("./pro/DropdownMenuProComponent").default;
} catch (err) {
  DropdownMenuComponent = require("./DropdownMenuComponent").default;
}

我尝试了动态导入,但是在缺少模块的情况下,它无法正确捕获错误。

谢谢

1 个答案:

答案 0 :(得分:1)

实际上,在第3阶段有一个建议,可以使用import()动态导入ES模块,也可以使用babel presets are available,在您的情况下是这样的:

if (isProAccount()) 
    import("./pro/DropdownMenuProComponent")
      .then(DropdownMenuComponent => DropdownMenuComponent.something());
else
    ...