了解关于JavaScript类的module.exports

时间:2017-05-09 22:06:55

标签: javascript node.js ecmascript-6 es6-class es6-module-loader

虽然我并没有将OOP强制转换为函数式语言,但我很难理解我的同行从类中导出模块的行为。所有我正在寻找的是什么叫这个,所以我可以继续做研究。根据我的理解,他们将一些外部SDK包含在一个内部类中,该类将继承LibIncludes中的所有内容。这假设允许所有类继承到LibIncludes和LibIncludes继承自Object。我现在遇到的是,任何时候我试图调用LibIncludes.Handlers;并执行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 个答案:

答案 0 :(得分:0)

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

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