Понимание module.exports в отношении классов JavaScript
Несмотря на то, что я не слишком силен в переводе ООП в функциональный язык, я изо всех сил пытаюсь понять, что мой коллега сделал для экспорта модулей из класса. Все, что я ищу, это как это назвать, чтобы я мог продолжать исследования. Из того, что я понимаю, они включали некоторый внешний SDK для передачи во внутренний класс, который унаследует все в LibInclude. Предполагается, что все классы наследуются в LibInclude, а LibInclude наследуется от Object. Сейчас я сталкиваюсь с тем, что каждый раз, когда я пытаюсь вызвать LibInclude.Handlers; и выполнить функцию, включенную в обработчики я получаю неопределенным. Я не могу понять, какой шаблон он применил для этой работы, и все в ES6 демонстрирует совершенно другой подход к экспорту и импорту между классами для наследования. Любая помощь будет принята с благодарностью.
// index.js
const ExternalSdk = new SDK.Function();
const HandlerService = require('./hander/handler.js');
class LibIncludes {
static compose() {
const Handler = new HandlerSvc(ExternalSdk);
return {
Handler
};
}
}
module.exports = LibIncludes;
let function = LibIncludes.sdkFunciton;
// function should be invoked and return some object
1 ответ
Вот решение, которое я придумал для рефакторинга. Кажется чище и без статических элементов:
// index.js
const ExternalSdk = new SDK.Function();
const HandlerService = require('./hander/handler.js');
module.exports = class LibIncludes {
constructor(handler) {
this.handler = new HandlerSvc(ExternalSdk);
}
}
// app.js
const lib = require('./index');
var getSomething = new lib();
console.log(getSomething.handler);
// function should be invoked and return some object