#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, это то, что я думал, но я не уверен, каков альтернативный подход тогда