2012-10-03 37 views
14

Có vẻ như TypeScript có một hệ thống mô-đun đẹp, tuy nhiên điều này có thay thế nhu cầu về thứ gì đó như requirejs không? Nói cách khác, khi bạn "biên dịch" một gói bản thảo, nó có xử lý tất cả độ phân giải phụ thuộc cho bạn không? Ví dụ sẽ được đánh giá cao!Quản lý gói TypeScript

Trả lời

16

TypeScript không có trình tải mô-đun thời gian chạy. Bạn sẽ vẫn cần cung cấp trình tải mô-đun để sử dụng trong thời gian chạy, ví dụ: yêu cầu js. TypeScript hỗ trợ tạo mã JavaScript tương thích với commonJS (cho tập lệnh node.js) và bộ nạp AMD (ví dụ: requireJS). Để chỉ định cái nào để sử dụng truyền vào công cụ "--module" tới trình biên dịch bằng "amd" hoặc "commonjs".

Đây là cách bạn xuất khẩu một mô-đun trong nguyên cảo:

export module depModule { 
    export class A { 
    } 
} 

và đây là mã JavaScript được tạo ra với --module switch amd:

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

nguyên cảo có thể phát ra mã mà sẽ làm việc với cả hai bộ tải phụ thuộc tương thích với AMD như môi trường requirejs hoặc commonjs như Node. Bạn có thể điều khiển điều này bằng tùy chọn --module cho trình biên dịch. Bản thân trình biên dịch không xử lý độ phân giải phụ thuộc vào thời gian chạy, điều đó tùy thuộc vào bạn để làm việc, nhưng nó cố gắng giải quyết các phụ thuộc tại thời gian biên dịch để nó có thể cung cấp cho bạn thông tin kiểu.

Bạn có thể xem ví dụ về các dự án sử dụng các mô-đun trong thư mục kiểm tra tại CodePlex, this one chẳng hạn. Đầu ra của việc biên dịch các dự án thử nghiệm này là các tệp .js có thể tải được hoặc bằng, ví dụ requirejs (nếu bạn truyền --module amd) hoặc Node (nếu bạn vượt qua - commonjs --module).

2

Nếu ứng dụng của bạn sẽ chỉ được tạo bởi mô-đun/tập tin loại, bạn không thể sử dụng trình tải mô-đun hoặc quản lý phụ thuộc khác. Bạn sẽ cần phải bao gồm tất cả các phụ thuộc với các tham chiếu bình luận và sử dụng tùy chọn --out của trình biên dịch. Ví dụ:

tsc --out compiled.js app.ts 

Điều này sẽ đưa vào biên dịch.js các js được tạo cho app.ts và tất cả các phụ thuộc của nó, bao gồm cả phụ thuộc của phụ thuộc. Tệp kết quả sau đó có thể được bao gồm trực tiếp trong tệp html với thẻ tập lệnh. Nó cũng có thể được giảm thiểu. Tải mô-đun trên thời gian chạy không được hỗ trợ

Các vấn đề liên quan