2012-12-13 6 views
9

TypeScript 내에서 모듈을 가져 오거나 uri에서 정의 파일을 참조 할 수 있습니까?Uri에서 TypeScript 모듈 가져 오기

우리는 우리의 응용 프로그램에 RequireJS를 사용하고 있으며 우리의 정의 파일과 TypeScript (또는 생성 된 JavaScript) 파일을 모두 프로젝트에 직접 포함하는 대신 CDN에서 제공하고자합니다.

우리는이 같은 정의 파일 참조 할 수 있습니다 타이프 라이터에서 참조하는 정의 파일
:

/// <reference path="https://github.com/borisyankov/DefinitelyTyped/raw/master/jquery/jquery-1.8.d.ts" /> 

export class UsesSomethingFromJQuery { 

    TestMethod(element: JQuery) { 
     // Do something with the supplied element 
    } 

} 

참고 : 그러나

/// <reference path="jquery-1.8.3.d.ts" /> 

는 무엇을 우리가하고 싶은 것은 이것이다 : 저는 Boris의 github 링크를 CDN으로 사용할 계획이 아닙니다. 개념을 설명하기 위해 링크를 사용했습니다. 타이프 스크립트 파일 가져 오기

우리는 또한 다음과 같이 일반적인 웹 사이트에서 모듈을 가져올 것
: 대한 URI를 제공 할 때

import OtherModule = module('http://some-internal-site/ts/other'); 

export class UsesSomethingFromOther { 

    TestMethod(c: OtherModule.TestClass) { 

    } 

} 

을하지만, 나는 오류 '잘못된 수입 경로'를 얻을 모듈. 우리는 우리는 우리의 통제, 일부 REST 서비스 래퍼 및 기타 유틸리티에 대한 자바 스크립트를 생성 타이프 라이터 파일의 라이브러리가
를 해결하기 위해 노력하고 무엇

. 우리는 이러한 공통 컨트롤을 다른 웹 응용 프로그램에서 사용하고 싶습니다.

일반 코어에서 정의 된 클래스에 의존하는 웹 사이트 (따라서 공통 코어의 일부가 아님)에 특정한 TypeScript 파일을 가지고있을 때 우리는 URI를 사용하여 종속성을 참조하고자합니다. 그러므로 위의 질문.

단순한 JavaScript 소스 파일이라면 내부 CDN에서 참조 파일을 호스팅하고 거기에서 참조 할 수 있지만 TypeScript 컴파일 단계에서 문제가 발생합니다. 우리가 잘못 접근하고 있습니까? 더 좋은 방법이 있습니까?

+1

내가 지금이 권리를 지원합니다 생각하지 않습니다 app.ts 거기에 문제를 제기하여 지원을 받으십시오. – BreeeZe

+0

왜 CDN에서 정의 파일을 서비스 하시겠습니까?그들은 당신의 빌드에 포장되어 있지 않은가? – thomaux

+1

@Anzeo - 우리는 우리의 주요 웹 사이트에 의해 활용되는 리소스를로드하는 중앙 컨텐츠 사이트를 가지고 있습니다. CSS, 이미지, 스크립트 등 ... 우리가 만든 정의 파일을이 사이트에서도 제공하도록하는 것이 좋습니다. –

답변

3

CDN에서 JavaScript 출력을 서버로 보내면 모듈 로더 또는 스크립트 태그에 영향을 미치지 만 런타임에는 .d.ts 파일이 필요하지 않습니다. require.config를 사용

당신은 다음과 같이 원격으로 파일을로드 할 this example of RequireJS and jQuery in TypeScript을 조정할 수 ...

  1. 현지 정의 파일 (.d.ts)
  2. 원격 런타임 파일. http://typescript.codeplex.com/discussions와 추가 :

당신의 DEVS 스스로를 요청할 수 있습니다,

///<reference path="require.d.ts" /> 
///<reference path="jquery.d.ts" /> 

require.config({ 
    paths: { 
    'jquery' : 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min' 
    } 
}); 

require(['jquery'], function (jquery) { 
    jquery(document).ready(() => { 
     alert('Your code executes after jQuery has been loaded.'); 
    }); 
}); 
+0

Steve, OP가 자신의 개인 CDN에서 정의 파일을 참조하려고합니다. – thomaux

+0

이 경우 NuGet을 그 목적을 위해 전적으로 보증 할 수 있습니까? – Fenton