Es gibt zwar einige Antworten, aber ich möchte auch einige meiner Ergebnisse hinzufügen, da ich wirklich verwirrt war mit dem, was tatsächlich kompiliert wird, wie in allen Fällen, TS
-> JS
Konvertierung geschieht. Ich nehme einen Absatz aus Jeffs Blog als Referenz.
JIT
Das TS
vom Entwickler geschriebene Code wird zu JS
Code kompiliert . Dieser kompilierte js
Code wird nun erneut vom Browser kompiliert, sodass er html
gemäß der Benutzeraktion dynamisch gerendert werden kann und dementsprechend zur angular
Laufzeit auch Codes für (für Komponenten, Änderungserkennung, Abhängigkeitsinjektion) generiert werden.
(Der Browser-Compiler verwendet die Anweisungen und Komponenten einer Anwendung zusammen mit dem entsprechenden HTML- und CSS-Code und erstellt Komponentenfabriken, um Instanzen mit ihrer gesamten Logik zur Erstellung von Ansichten schnell auszumerzen.)
Wenn eine Angular 2-Anwendung im Browser gebootet wird, führt der JIT-Compiler viel Arbeit aus, um die Komponenten in der Anwendung zur Laufzeit zu analysieren und Code im Speicher zu generieren. Wenn die Seite aktualisiert wird, wird die gesamte geleistete Arbeit weggeworfen, und der JIT-Compiler erledigt die Arbeit erneut.
AOT
Der TS
vom Entwickler geschriebene Code wird zu JS
Code kompiliert , dieser js
wurde bereits auch für Angular kompiliert . Dieser kompilierte js
Code wird nun erneut vom Browser kompiliert, damit der html
gerendert werden kann. Aber ist der Haken hier , dass die Funktionen von angular
bereits betreut von genommen worden AOT
Compiler und damit der Browser haben nicht viel zu befürchten über die Erstellung von Bauteilen, Änderungserkennung, Dependency Injection. Also haben wir :
Schnelleres Rendern
Mit AOT lädt der Browser eine vorkompilierte Version der Anwendung herunter. Der Browser lädt ausführbaren Code, damit er die Anwendung sofort rendern kann, ohne darauf warten zu müssen, dass die App zuerst kompiliert wird.
Weniger asynchrone Anforderungen
Der Compiler fügt externe HTML-Vorlagen und CSS-Stylesheets in das JavaScript der Anwendung ein und eliminiert separate Ajax-Anforderungen für diese Quelldateien.
Kleinere Angular Framework-Downloadgröße
Der Angular-Compiler muss nicht heruntergeladen werden, wenn die App bereits kompiliert ist. Der Compiler ist ungefähr die Hälfte von Angular selbst. Wenn Sie ihn weglassen, wird die Nutzlast der Anwendung drastisch reduziert.
Erkennen Sie Vorlagenfehler früher
Der AOT-Compiler erkennt und meldet Vorlagenbindungsfehler während des Erstellungsschritts, bevor Benutzer sie sehen können.
Bessere Sicherheit
AOT kompiliert HTML-Vorlagen und -Komponenten in JavaScript-Dateien, lange bevor sie dem Client bereitgestellt werden. Ohne zu lesende Vorlagen und ohne riskante clientseitige HTML- oder JavaScript-Auswertung gibt es weniger Möglichkeiten für Injection-Angriffe.
Verbleibende Unterschiede werden bereits in den Aufzählungspunkten von Benyamin, Nisar & Gaurang behandelt.
Fühlen Sie sich frei, mich zu korrigieren