3.5.2. Внешний JS-модуль#
JavaScript файл, содержащий код внешнего компонента(-ов).
let MyModule = /** @class */ (function () {
let moduleId = null;
function MyModule() {
}
MyModule.prototype.createControl = function (name) {
return new MyControl();
};
MyModule.prototype.createComposer = function (name) {
return new MyComposer();
};
MyModule.prototype.init = function (id) {
moduleId = id;
};
MyModule.prototype.destroy = function () {
moduleId = null;
};
return MyModule;
}());
export default new MyModule();
Файл содержится в ресурсах прикладного модуля.
Файл должен экспортировать js-модуль
export default {ссылка_на_объект_модуля}
, удовлетворяющего интерфейсуExtJsModule
.Создаваемый объект
MyControl
должен удовлетворять интерфейсуExtControl
.Создаваемый объект
MyComposer
должен удовлетворять интерфейсуExtComposer
.JS-модули загружаются в клиентское приложение один раз. При повторном открытии фрейма с внешним компонентом ссылка на JS-модуль будет браться из кэша приложения.
Для JS-модулей реализован
acquire/release
паттерн. При каждом получении ссылки на модуль, перед созданием экземпляра внешнего компонента, увеличивается счётчик использований модуля. При увеличении счётчика использований0 -> 1
, у модуля вызываетсяExtJsModule.init(id)
. При уменьшении счётчика до0
, вызываетсяExtJsModule.destroy()
Note
При перезагрузке прикладного кода приложения, будут перезагружены все JS-модули.