2012-12-13 22 views
9

Có thể trong TypeScript để nhập mô-đun hoặc tham chiếu tệp định nghĩa từ một uri không?Nhập Mô-đun TypeScript từ Uri

Chúng tôi đang sử dụng RequireJS cho ứng dụng của chúng tôi và muốn phân phối một số tệp định nghĩa và tệp TypeScript (hoặc JavaScript được tạo) từ CDN thay vì bao gồm tất cả chúng trực tiếp trong các dự án của chúng tôi.

Cách tham khảo Định nghĩa tập tin
Trong nguyên cảo chúng ta có thể tham khảo một tập tin định nghĩa như thế này:

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

Tuy nhiên, những gì chúng tôi muốn làm là thế này:

/// <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 
    } 

} 

LƯU Ý: Tôi không định sử dụng liên kết github của Boris như CDN. Tôi đã sử dụng liên kết để chứng minh khái niệm.

Nhập khẩu nguyên cảo tập tin
Chúng tôi cũng muốn nhập khẩu các module từ một trang web thông thường, như thế này:

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

export class UsesSomethingFromOther { 

    TestMethod(c: OtherModule.TestClass) { 

    } 

} 

Tuy nhiên, tôi nhận được lỗi 'con đường nhập khẩu không hợp lệ' khi cung cấp một uri cho mô-đun.

gì Chúng tôi đang cố gắng giải quyết
Chúng tôi có một thư viện các tập tin nguyên cảo tạo ra JavaScript cho kiểm soát của chúng tôi, một số giấy gói dịch vụ REST, và các tiện ích khác. Chúng tôi muốn sử dụng các điều khiển phổ biến này trong các ứng dụng web khác.

Khi chúng tôi có tệp TypeScript cụ thể cho một trong các trang web của chúng tôi (do đó không phải là một phần của lõi chung) dựa trên các lớp được xác định trong lõi chung, chúng tôi muốn tham khảo phụ thuộc bằng cách sử dụng một uri. Do đó câu hỏi trên.

Nếu đây là các tệp nguồn JavaScript đơn giản, chúng tôi sẽ lưu trữ chúng trên CDN nội bộ và tham chiếu từ đó nhưng với bước biên dịch TypeScript, chúng tôi gặp sự cố. Chúng ta đang tiếp cận điều này theo cách sai? Có cách nào tốt hơn?

+1

Tôi không nghĩ rằng nó hỗ trợ này ngay bây giờ, bạn có thể hỏi các devs cứ vào: http://typescript.codeplex.com/discussions và thêm một vấn đề ở đó để thử và hỗ trợ nó. – BreeeZe

+0

Tại sao bạn muốn phục vụ các tệp định nghĩa từ CDN?Họ không được đóng gói trong xây dựng của bạn là họ? – thomaux

+1

@Anzeo - Chúng tôi có một trang nội dung trung tâm, từ đó chúng tôi tải các tài nguyên được các trang web chính của chúng tôi thừa hưởng; css, hình ảnh, tập lệnh, v.v ... Mong muốn là có các tệp định nghĩa mà chúng tôi đã tạo được phân phát từ trang web này. –

Trả lời

3

Tôi nghĩ rằng bạn nên tạo đầu ra JavaScript từ CDN, điều này sẽ ảnh hưởng đến trình tải mô-đun hoặc thẻ tập lệnh của bạn, nhưng không yêu cầu tệp .d.ts khi chạy.

Bạn có thể điều chỉnh this example of RequireJS and jQuery in TypeScript để tải tập tin từ xa như thế này ...

  1. file Local định nghĩa (.d.ts)
  2. file runtime từ xa, sử dụng require.config.

app.ts

///<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, tôi nghĩ rằng OP muốn tham chiếu các tệp định nghĩa từ CDN riêng của họ – thomaux

+0

Trong trường hợp đó, tôi hoàn toàn có thể xác nhận NuGet chỉ vì mục đích đó. – Fenton