0

OOP를 기능적 언어로 강요하는 것은 아니지만 클래스의 모듈을 내보내는 피어가 무엇인지 이해하려고 애 쓰고 있습니다. 내가 찾고있는 건 이걸 부르는 것입니다. 그래서 연구를 계속할 수 있습니다. 내가 이해 한 바로는 내부 클래스에 전달되는 외부 SDK를 포함하여 모든 것을 LibIncludes에 상속받습니다. 모든 클래스가 LibIncludes로 상속하고 LibIncludes가 Object에서 상속받을 수 있도록하는 것으로 가정합니다. 내가 지금 실행하고있는 것은 언제든지 LibIncludes를 호출하려고하는 것입니다 .Handlers; 정의되지 않은 핸들러에 포함 된 함수를 실행합니다. 나는 그가이 작업을하기 위해 어떤 패턴을 적용했는지 이해할 수 없으며 ES6의 모든 것이 상속을위한 클래스간에 내보내기와 가져 오기에 대한 완전히 다른 접근법을 보여줍니다. 어떤 도움이라도 대단히 감사하겠습니다.JavaScript 클래스와 관련하여 module.exports를 이해하십시오.

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

클래스 평소처럼 JS 값입니다 app.js. 그리고'module.exports'는 항상 그렇듯이 작동합니다. ES6에서는 특별한 것이 없습니다. – Bergi

+2

이것은 끔찍합니다. *** ***은 정적 멤버만으로 클래스를 정의해야합니다. 동료는 간단한 개체 리터럴을 사용해야합니다. – Bergi

답변

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); 
    } 
} 

//

const lib = require('./index'); 

var getSomething = new lib(); 
console.log(getSomething.handler); 
// function should be invoked and return some object