Pytanie Zarządzanie pakietami TypeScript


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!


14
2017-10-03 18:58


pochodzenie




Odpowiedzi:


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 TypeScript:

export module depModule { 
    export class A { 
    }
}

a oto wygenerowany kod JavaScript z przełącznikiem --module amd:

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

16
2017-10-03 19:07





TypeScript może emitować kod, który będzie działał z obydwoma ładowarkami zależności zgodnymi z AMD, takimi jak requirejs lub commonjs, takimi 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żesz zobaczyć przykłady projektów wykorzystujących moduły w katalogu testowym w CodePlex, ten 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).


3
2017-10-03 19:11





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. Na przykład:

tsc --out compiled.js app.ts

Spowoduje to dodanie do pliku compiled.js js dla app.ts i wszystkich jego zależności, w tym zależności 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 środowisku wykonawczym nie jest obsługiwane


2
2017-10-04 18:46