【问题标题】:Working with IIFE file that used to be an ES6 class-based file使用曾经是基于 ES6 类的文件的 IIFE 文件
【发布时间】:2020-09-10 22:24:06
【问题描述】:

我正在使用我开发的基于 ES6 类的文件,但由于与 IE11 的兼容性问题,我不得不使用 RollupJS 将基于类的文件转换为立即调用函数表达式,问题在于root index.js 文件,基于类的文件是这样实例化的:

import { XCode } from './Library/Transform/xcode-es6.js';
import * as uIHandler from './Library/Transform/UIHandler.js'

try {
  const handler = new uIHandler();
  const sdk = XCode();
  sdk.setHandler(handler);
}

我们收到一个错误,它找不到uIHandler,我相信问题不在于顶部的导入语句,而是我们无法再实例化 IIFE 类型的文件。如果我是正确的,这里的解决方案是什么?我在 IIFE 方面的经验非常有限。

【问题讨论】:

  • 问题肯定出在 import 语句上,因为import * as uIHandler from … 是一个命名空间导入,而uiHandler 绝对不是你可以用new 调用的构造函数。请向我们展示该模块的 ES6 源代码。

标签: javascript iife


【解决方案1】:

您需要将 RollupJS 应用于整个程序,而不仅仅是部分程序。

它已经转换了UIHandler.js,所以它不再是一个 ES6 模块,所以你不能再把它当作一个模块了。

【讨论】:

  • 对,如果我理解正确,那意味着我们无法实例化 IIFE。
  • @Daniel IIFE 不是函数,它是调用函数并返回其返回值的表达式。该函数作为临时值嵌套在内部,无法实例化它。
  • @Barmar,这就是我的想法,但我不确定当时的替代方法是什么
猜你喜欢
  • 1970-01-01
  • 2012-12-24
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2021-08-11
相关资源
最近更新 更多