Работа с файлом IIFE, который раньше был файлом на основе класса ES6

#javascript #iife

#javascript #iife

Вопрос:

Я работал с файлом на основе класса ES6, который я разработал, но из-за проблем с совместимостью с IE11 мне пришлось использовать RollupJS для переноса файла на основе класса в немедленно вызываемое функциональное выражение. проблема в том, что в корневом 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 , я полагаю, проблема не в инструкции import вверху, а в том, что мы больше не можем создать экземпляр файла типа IIFE. Если я прав, каким было бы решение здесь? У меня очень ограниченный опыт работы с IIFE.

Комментарии:

1. Проблема определенно связана с инструкцией import, так как import * as uIHandler from … это импорт пространства имен и uiHandler определенно не будет функцией конструктора, которую вы можете вызвать с помощью new . Пожалуйста, покажите нам исходный код ES6 этого модуля.

Ответ №1:

Вам нужно применить RollupJS ко всей программе, а не только к ее частям.

Он преобразован UIHandler.js , поэтому он больше не является модулем ES6, поэтому вы больше не можете рассматривать его как таковой.

Комментарии:

1. правильно, если я вас правильно понял, это означает, что мы не можем создать экземпляр IIFE.

2. @Daniel IIFE — это не функция, это выражение, которое вызывает функцию и возвращает ее возвращаемое значение. Функция вложена внутрь как временное значение, нет способа создать ее экземпляр.

3. @Barmar, это то, что я думал, но я не уверен, каков альтернативный подход тогда