Versuch, RxJS-Importe zu verstehen

8

Es fällt mir schwer herauszufinden, wie genau diese Importanweisung funktioniert (in einer Angular-Anwendung, die in Typescript geschrieben ist):

%Vor%

Ich bekomme, dass rxjs dem entsprechenden node_modules Unterordner in der SystemJS Konfigurationsdatei zugeordnet ist, aber dann stecke ich fest. Ich sehe, dass es eine index.js-Datei gibt, aber ich sehe nicht, ob und wie dies hilft, den add/operator/... -Teil aufzulösen.

Ähnlich verstehe ich das nicht:

%Vor%

Auch hier gibt es keine Datei Observable.* file. Ich denke, dass es irgendwie über die index.js-Datei funktioniert, aber ich würde wirklich gerne ein tiefergehendes Verständnis bekommen, da ich gelesen habe, dass es einfach ist, RxJS aus Versehen zu importieren, was die Seitenladezeiten erhöht.

Ich habe mir die Dokumentation der Typoskript-Modul-Auflösung näher angesehen, aber ich habe das Gefühl, dass dies nicht ausreicht, um es zu erklären.

Update: Nach dem Lesen der untenstehenden Antwort habe ich herausgefunden, dass ich das Verzeichnis node_modules/rx anstelle von node_modules/rxjs gesucht habe, damit die Importanweisungen perfekt mit der Verzeichnisstruktur übereinstimmen.

>     
lex82 27.04.2017, 07:43
quelle

1 Antwort

5

Es ist ziemlich einfach, weil TypeScript standardmäßig in node_modules Verzeichnis sucht.

Importieren Sie Folgendes:

%Vor%

wird als node_modules/rxjs/Observable.d.ts aufgelöst, was ausreicht, um den Code zu kompilieren.

Ähnlich wird der Import von rxjs/add/operator/toPromise als node_modules/rxjs/add/operator/toPromise.ts aufgelöst. Übrigens können Sie mit der Compileroption --traceResolution sehen, welcher TypeScript-Pfad getestet wird.

Wenn Sie Ihr kompiliertes JS (zB in commonjs Format) haben, können Sie Ihre App in node ausführen, weil sie require('rxjs/Observable') aufruft, was in node_modules/rxjs/Observable.js aufgelöst wird. Dann ähnlich mit rxjs/add/operator/toPromise .

Beachten Sie, dass die Code-Struktur der RxJS github-Seite sich vom tatsächlichen npm-Paket unterscheidet. Im Grunde nur das package.json und das src Verzeichnis mit dem kompilierten .js und .d.ts Dateien werden in das npm-Repository hochgeladen (die ursprünglichen .ts -Quelldateien sind in node_modules/rxjs/src , aber Sie möchten nie direkt mit ihnen arbeiten).

    
martin 27.04.2017, 08:32
quelle

Tags und Links