2012-10-03 5 views
14

TypeScript처럼 멋진 모듈 시스템이 있지만 requirejs와 같은 필요성을 대체합니까? 즉, 타이프 스크립트 패키지를 "컴파일"하면 모든 종속성 해결이 처리됩니다. 예를 들어 주시면 감사하겠습니다!TypeScript 패키지 관리

답변

16

TypeScript에는 런타임 모듈 로더가 없습니다. 런타임에 사용할 모듈 로더를 제공해야합니다 (예 : js가 필요합니다. TypeScript는 commonJS (node.js 스크립트 용) 및 AMD 로더 (예 : requireJS)와 호환 가능한 JavaScript 코드 생성을 지원합니다. 사용할 모듈을 "--module"에서 "amd"또는 "commonjs"로 컴파일러로 전환하도록 지정하려면 다음을 수행하십시오. 여기

는 타이프에서 모듈을 내보내는 방법은 다음과 같습니다

export module depModule { 
    export class A { 
    } 
} 

을 여기 --module AMD의 스위치를 사용하여 생성 된 자바 스크립트 코드 :

define(["require", "exports"], function(require, exports) { 
    (function (depModule) { 
     var A = (function() { 
      function A() { } 
      return A; 
     })(); 
     depModule.A = A; 
    })(exports.depModule || (exports.depModule = {})); 
}) 
3

타이프 라이터 기능이 작동 코드를 방출 할 수있다 노드와 같은 requirejs 또는 commonjs 환경과 같은 AMD 호환 종속성 로더 둘 다. 컴파일러에 대한 --module 옵션을 사용하여이를 제어 할 수 있습니다. 컴파일러 자체는 런타임에 종속성 분석을 처리하지 않습니다. 해결해야 할 문제는 있지만 컴파일 시간에 종속성 문제를 해결하려고 시도하므로 입력 정보를 얻을 수 있습니다.

모듈을 사용하는 프로젝트의 예는 CodePlex의 테스트 디렉토리 (예 : this one)에서 볼 수 있습니다. 이러한 테스트 프로젝트를 컴파일하는 결과는 requirejs (--module amd를 전달한 경우) 또는 Node (--module commonjs를 전달한 경우)와 같이로드 할 수있는 .js 파일입니다.

2

응용 프로그램이 타이프 스크립트 모듈/파일로만 구성되는 경우 모듈 로더 또는 기타 종속성 관리를 사용하지 않아도됩니다. 주석 참조가있는 모든 종속성을 포함하고 컴파일러의 --out 옵션을 사용해야합니다. 예 :

tsc --out compiled.js app.ts 

이 넣어 의존성의 의존성을 포함 app.ts와 모든 종속성에 대해 생성 된 JS를 compiled.js 것입니다. 결과 파일은 script 태그와 함께 html 파일에 직접 포함될 수 있습니다. 그것은 또한 축소 될 수 있습니다. 런타임시 모듈로드가 지원되지 않습니다.