2014-12-03 2 views
0

모듈을 NAMESPACES (아래 예 참조)으로 구성하려고 시도했으며 가능한 최신의 똑똑한 이름의 JavaScript 라이브러리 또는 프레임 워크에 거의 의존하지 않았습니다. 나는이 질문이 엄청나게 집중되지는 않지만, 은 이것이 확장 가능한 접근법이 아니라는 것을 알고있다. 내가 알아야 할 자바 스크립트를 확장 할 수있는 또 다른 방법이 있습니까?큰 자바 스크립트 앱을 구성하는 방법은 무엇입니까?

크롬 앱용이라고 덧붙여 야합니다.

var MODULE_A = (function() { 
    var A_CONSTANT_NUMBER = 1; 
    var myPrivateVar_ = 2; 

    var privateMethod1 = function() { 
    console.log("A.privateMethod1"); 
    }; 

    var privateMethod2 = function() { 
    console.log("A.privateMethod2"); 
    }; 

    return { 
    aPublicVar1: 3, 

    publicMethod1: function() { 
     console.log("A.publicMethod1"); 
    }, 

    publicMethod2: function() { 
     console.log("A.publicMethod2"); 
    } 
    } 
})(); 
+1

나는 이것을 위해 requirejs 접근법을 사용할 것을 제안 할 것이다. DI – FabianCook

+0

CommonJS (Node.js 및 npm에서 사용) + browserify : http://browserify.org/를 확인하십시오. 또한 ES6에서는 모듈을 도입 할 예정입니다. –

답변

1

requirejs을 살펴보십시오. 의존성 해결 /로드를 추가하는 것이 매우 쉽다고 제안하는 내용을 만듭니다.

0

글로벌 네임 스페이스는 최신 모듈 시스템으로 얻을 수있는 이점을 충분히 제공하지 못합니다.

노드 응용 프로그램을 작성하는 경우 commonjs를 사용하거나 브라우저 용으로 작성하는 경우 requirejs로 amd를 조사해야합니다. 두 모듈 모두 한 모듈의 종속성을 다른 모듈에 적절하게 정의하고 캡슐화를 올바르게 수행하며 가장 중요한 것은 종속성 그래프를 추적 할 수있는 기능을 제공합니다. Amd는 런타임 비동기 적재를 제공합니다. 이것은 좋지만 몇 가지 추가적인 골치 거리도 있습니다.

이렇게 모듈을 적절하게 캡슐화하면 무한대로 확장 할 수있는 대형 코드베이스를 구성 할 수있는 훨씬 좋은 방법이 제공됩니다. 이름 공간은 여기서도 문제가되지 않지만 파일 경로 및/또는 모듈 구성에서 파생됩니다. 로컬에서는 원하는대로 반환 값이나 모듈 내보내기의 이름을 지정할 수 있습니다.

관련 문제