理解 module.exports 关于 JavaScript 类

Understanding module.exports in regard to JavaScript Classes

虽然我不太愿意将 OOP 强制变成一种函数式语言,但我很难理解我的一个同行是如何从 Class 中导出模块的。我正在寻找的只是如何称呼它,以便我可以继续进行研究。据我了解,他们包括一些外部 SDK 以传递到内部 class,这将继承 LibIncludes 中的所有内容。这是假设允许所有 classes 继承到 LibIncludes 和 LibIncludes 继承自 Object。我现在 运行 喜欢的是任何时候我尝试调用 LibIncludes.Handlers;并执行我未定义的处理程序中包含的函数。我无法弄清楚他应用了什么模式来完成这项工作,ES6 中的所有内容都显示了一种完全不同的在 classes 之间导出和导入以进行继承的方法。任何帮助将不胜感激。

// 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

这是我提出的重构解决方案。它看起来更干净,没有静态成员:

// 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