Bien qu'il y ait des réponses, mais j'aimerais aussi ajouter certaines de mes découvertes, car j'étais vraiment confus avec ce qui est réellement compilé comme dans tous les cas, TS
-> la JS
conversion se produit. Je prends quelques para du blog de Jeff comme référence.
JIT
Le TS
code écrit par le développeur est compilé en JS
code. Maintenant, ce js
code compilé est à nouveau compilé par le navigateur afin que le html
puisse être rendu dynamiquement selon l'action de l'utilisateur et en conséquence les codes pour angular
(pour les composants, la détection de changement, l'injection de dépendances) sont également générés au moment de l'exécution.
(Le compilateur de navigateur est ce qui prend les directives et les composants d'une application, ainsi que leurs codes HTML et CSS correspondants, et crée des fabriques de composants pour éliminer rapidement les instances avec toute leur logique de création de vue.)
Lorsqu'une application Angular 2 est amorcée dans le navigateur, le compilateur JIT effectue beaucoup de travail pour analyser les composants de l'application au moment de l'exécution et générer du code en mémoire. Lorsque la page est actualisée, tout le travail qui a été effectué est jeté et le compilateur JIT refait le travail.
AOT
Le TS
code écrit par le développeur est compilé en JS
code, cela js
a déjà été compilé pour angular également . Maintenant, ce code compilé js
est à nouveau compilé par le navigateur afin que le html
fichier puisse être rendu. Mais le problème ici est que les fonctionnalités de angular
ont déjà été prises en charge par le AOT
compilateur et que le navigateur n'a donc pas à se soucier beaucoup de la création de composants, de la détection des changements, de l'injection de dépendances. Donc nous avons :
Rendu plus rapide
Avec AOT, le navigateur télécharge une version pré-compilée de l'application. Le navigateur charge le code exécutable afin de pouvoir rendre l'application immédiatement, sans attendre de compiler l'application au préalable.
Moins de requêtes asynchrones
Le compilateur intègre des modèles HTML externes et des feuilles de style CSS dans le JavaScript de l'application, éliminant ainsi les requêtes ajax distinctes pour ces fichiers source.
Taille de téléchargement du framework angulaire plus petite
Il n'est pas nécessaire de télécharger le compilateur Angular si l'application est déjà compilée. Le compilateur représente environ la moitié d'Angular lui-même, donc l'omettre réduit considérablement la charge utile de l'application.
Détecter les erreurs de modèle plus tôt
Le compilateur AOT détecte et signale les erreurs de liaison de modèle au cours de l'étape de génération avant que les utilisateurs puissent les voir.
Meilleure sécurité
AOT compile les modèles et composants HTML dans des fichiers JavaScript bien avant qu'ils ne soient servis au client. Sans modèles à lire et sans évaluation HTML ou JavaScript côté client, les opportunités d'attaques par injection sont moins nombreuses.
Les différences restantes sont déjà couvertes dans les puces de Benyamin, Nisar et Gaurang.
N'hésitez pas à me corriger