理解 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
虽然我不太愿意将 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