2017-03-14 2 views
0

나는 내 '자체 사용'응용 프로그램을위한 유틸리티 세트를 구축 중입니다. =>프로토 타입은 모듈 시대의 API에서 사용되어야 함

export const doSomething =() => { 
... } 

export const doSomethingElse =() => { 
... } 

내 질문은 ES2015을 사용하여, 나는 모듈 내에서 서로 독립적으로 유틸리티 함수를 작성해야하는 위치 궁금해, 람, 메인 객체를 생성하는 옛날 방식을가는에 대한 필요가있다 & 그런 다음 모든 유틸리티 함수로 해당 오브젝트를 확장합니까? 알라 =>

export const mainObj = function(){ 
... } 

mainObj.prototype.doSomething = function(){ 
... } 

mainObj.prototype.doSomethingElse = function(){ 
... } 

많은 감사

+1

왜 프로토 타입에 추가할까요? 왜 주요 객체의 속성으로 만들지 않는가? 'mainObj.method' – evolutionxbox

+0

괜찮을 것입니다. 질문은 하나의 패턴을 다른 변수가 동등한 패턴으로 선호한다면 하나의 패턴을 선호해야합니까? – Kayote

+0

[이 질문] (http://stackoverflow.com/questions/38340500/export-multiple-classes-in-es6-modules) 도움이 될까요? – evolutionxbox

답변

1

/흔들어 트리를 사용할 수있는 도구를 구축 :

이 무료 기능을 노출 나는 일반적으로 구조 모듈 방법이다. 이것은 최종 스크립트에서 사용되지 않는 함수를 제외하므로 코드 크기가 줄어 듭니다.

속성을 동적으로 참조 할 수 있기 때문에 개체를 내보낼 때 불가능합니다 (또는 적어도 어려움). 그래서 도구는 기능이 사용되는지 아닌지를 확실히 말할 수 없습니다.

개체가있는 것을 선호한다면 항상 import * 일 수 있지만 비슷한 효과가 있지만 트리 떨림을 방지 할 수 있습니다.

+0

멋진 점이 있습니다. 그리고 Webpack을 사용함에 따라 말이됩니다. 나는 오래된 방법으로가는 것에 어떤 이점이 있는지 알아 내고 싶었다. 그렇지 않은 것 같다. – Kayote

0

당신은 몇 가지 방법으로이 작업을 수행 할 수 있습니다. 프로토 타입을 조작하는 것은 확실히 깨끗한 방법이 아닙니다. 당신은 아마 단지 일반 객체 나 클래스를 원할 것입니다. 개별적으로 다음 번 들러를 기능을 내보내는 경우

// Either 
const foo = function foo (...args) { 
    return args; 
}; 

module.exports = { 
    foo 
    // … 
}; 

// Or if you do not need to reference other functions in 
// the same module 
module.exports = { 
    foo (...args) { 
    return args; 
    } 
    // … 
}; 
+0

왜 수업이 필요합니까? 그냥 궁금해서 ... – evolutionxbox

+0

ES6에는 지금 클래스가 있기 때문에 프로토 타입과 프로토 타입 상속을 처리하는 표준 방법도 있습니다. 이는 ES에 대한 큰 진일보이며 가능한 경우 포용되어야합니다. –

+0

ES6 클래스는 프로토 타입 상속을위한 구문 설탕이라는 것을 알고 있습니까? – evolutionxbox

관련 문제