Понимание 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
Другие вопросы по тегам