2012-10-03 28 views
14

Wygląda na to, że TypeScript ma przyjemny system modułów, ale czy to zastępuje potrzebę czegoś takiego jak requirejs? Innymi słowy, kiedy "skompilujesz" pakiet maszynopisu, zajmie się on dla ciebie całą rozdzielczością zależności? Przykłady będą mile widziane!Zarządzanie pakietami TypeScript

Odpowiedz

16

Język TypeScript nie ma modułu ładującego środowisko wykonawcze. Nadal będziesz musiał dostarczyć moduł ładujący do użycia w czasie wykonywania, np. wymagać js. TypeScript obsługuje generowanie kodu JavaScript kompatybilnego z commonJS (dla skryptów node.js) i programami ładującymi AMD (np. RequireJS). Aby określić, który z nich będzie użyty, prześlij go do przełącznika "--module" do kompilatora z "amd" lub "commonjs".

Oto jak wyeksportować moduł w maszynopisie:

export module depModule { 
    export class A { 
    } 
} 

i tu jest wygenerowany kod JavaScript z --module przełącznika amd:

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

maszynopis może emitować kod, który będzie współpracować z Obydwie ładowarki zależności zgodne z AMD, takie jak requirejs lub commonjs, takie jak Node. Możesz to kontrolować za pomocą opcji --module do kompilatora. Sam kompilator nie radzi sobie z rozwiązywaniem zależności w środowisku wykonawczym, to wszystko zależy od Ciebie, ale próbuje rozwiązać zależności w czasie kompilacji, dzięki czemu może podać informacje o typie.

Można zobaczyć przykłady projektów, które korzystają z modułów w katalogu testowym w CodePlex, this one na przykład. Dane wyjściowe do kompilacji tych projektów testowych to pliki .js, które można załadować na przykład przez requirejs (jeśli przekażemy --module amd) lub Node (jeśli przekażemy --module commonjs).

2

Jeśli twoja aplikacja będzie składać się tylko z modułów/plików maszynopisu, nie będzie można używać modułów ładujących lub innych funkcji zarządzania zależnościami. Będziesz musiał uwzględnić wszystkie zależności za pomocą komentarzy i użyć opcji --out kompilatora. Np:

tsc --out compiled.js app.ts 

Będzie to umieścić w compiled.js wygenerowane js dla app.ts i wszystkich jego zależności, w tym zależności od zależności. Wynikowy plik można następnie dołączyć bezpośrednio do pliku html za pomocą znacznika script. Można go również zminimalizować. Ładowanie modułu w czasie wykonywania nie jest obsługiwane