Angulaire 2 : Juste-à-Temps (JiT) vs à l'Avance (AoT) compilation
Je faisais allusion cette documentation et est venu à travers la compilation concept. On peut utiliser soit JIT ou AOT compilation. Cependant, je l'ai trouvé très brève et le besoin de connaître les points suivants détails,
- De différences entre ces deux techniques
- Recommandation sur l'utilisation de ce
Vous devez vous connecter pour publier un commentaire.
JIT Compiler Tapuscrit juste à temps pour l'exécuter.
AOT Compilation de la Machine pendant la phase de construction.
Bien qu'il existe quelques réponses mais je voudrais ajouter certains de mes résultats, car j'étais vraiment confus avec ce qui est réellement en cours de compilation comme dans tous les cas,
TS
-->JS
la conversion se produit. Je prend par de Jeff blog comme une référence.JIT
La
TS
le code écrit par le développeur est compilé pourJS
code. Maintenant, ce compiléjs
code est compilé par le navigateur à nouveau de sorte que lehtml
peut être rendu de façon dynamique comme par l'action de l'utilisateur et par conséquent les codes pourangular
( pour les composants, la détection du changement, de l'Injection de Dépendances) sont également générés lors de l'exécution .(Le navigateur compilateur est ce qui prend de l'application des directives et des composants, ainsi que leur correspondant HTML et CSS, et crée composant usines rapidement timbre cas avec l'ensemble de leurs la création de la vue logique.)
AOT
La
TS
le code écrit par le développeur est compilé pourJS
code ,cejs
a déjà a été compilé pour angulaires et. Maintenant, ce compilé
js
code est compilé à nouveau par le navigateur à nouveau de sorte que lehtml
peuvent être rendus. Mais, le hic ici est que les caractéristiques deangular
a déjà été pris en charge parAOT
compilateur et donc le navigateur n'avez pas à vous inquiéter beaucoup à propos de la création de composant, de la détection de changement, l'Injection de Dépendance. Nous avons donc :Avec AOT, le navigateur télécharge une version pré-compilée de l'application. Le navigateur charge le code de l'exécutable de sorte qu'il peut rendre l'application immédiatement, sans attendre de les compiler la première application.
Le compilateur inlines externe des modèles HTML et feuilles de style CSS à l'intérieur de l'application JavaScript, l'élimination de séparer les requêtes ajax pour les fichiers source.
Il n'y a pas besoin de télécharger l'angle de compilateur si l'application est déjà compilé. Le compilateur est à peu près la moitié de l'Angulaire de lui-même, de sorte que l'omission il réduit considérablement l'application de la charge utile.
La AOT compilateur détecte et signale modèle de liaison des erreurs lors de l'étape de génération avant que les utilisateurs puissent les voir.
AOT compile des modèles HTML et les composants dans les fichiers JavaScript longtemps avant qu'ils soient servis au client. Avec pas de modèles à lire et pas risqué côté client HTML ou JavaScript, de l'évaluation, il y a moins de possibilités pour les attaques par injection.
Les différences qui subsistent sont déjà couverts dans les points de balle de Benyamin, Nisar & Gaurang .
Hésitez pas à me corriger
Benyamin et Nisar mentionné quelques bons points ici. Je vais l'ajouter à elle.
Bien que théoriquement, AOT semble une option intéressante que JIT pour la production de but, mais j'ai eu mes doutes si AOT vraiment la peine!
Bien, j'ai trouvé statistiques nice par Jeff Cross et il n'prouver que AOT réduit considérablement le temps d'amorçage de l'application. Ci-dessous composant logiciel enfichable de Jeff Cross post va vous donner rapide idée à ce sujet,
JiT (Just in Time) Compilation
Le nom lui-même décrit le travail, Il compile le code dans le temps de chargement de la page dans le navigateur. Le navigateur va télécharger le compilateur et de construire le code de l'application et la rend à la fois.
Il sera bon pour l'environnement de développement.
AoT (à l'Avance) Compilation
Il compile tout le code au moment de la construction de l'application. Si le navigateur ne voulez pas télécharger le compilateur et compiler le code. Dans cette méthode de navigateur peut facilement rendre l'application par juste le chargement de la déjà le code compilé.
Peut être utilisé dans l'environnement de production
Nous pouvons comparer le JiT et AoT compilation comme ci-dessous
JIT (Just-in-Time Compilation)
AOT (Avance sur le Temps de Compilation)
Il n'y a en fait une seule Angulaire du compilateur. La différence entre l'AOT et JIT est une question de timing et de l'outillage. Avec AOT, le compilateur s'exécute une fois, au moment de la construction à l'aide d'un ensemble de bibliothèques; avec JIT il s'exécute à chaque fois pour chaque utilisateur au moment de l'exécution à l'aide d'un ensemble différent de bibliothèques.
Trouvé une explication très bonne ici ..
TLDR;
Essentiellement, nous sommes en train de compiler le code deux fois avec angular2 apps, une fois quand nous convertir TS en JS et puis quand le navigateur convertit JS binaire.
Alors que nous ne pouvons pas contrôler ce dernier, nous pouvons toutefois de contrôle lors de la compilation de TS les JS est exécuté.
Avec angular2, si vous allez avec JIT (qui est par défaut), à la fois la compile se produire après que le code est chargé dans le navigateur (c'est à dire TS -> JS -> binaire). Non seulement est-il une surcharge supplémentaire pour faire le TS -> JS compilation à la volée sur le navigateur, mais aussi, la angular2 compilateur est presque la moitié de la taille de la angular2 package donc, si nous éviter cela, on peut réduire la taille de la charge utile et de manière significative.
AOT precomplies TS code JS, réduire le temps de compilation, ainsi que la taille du code, par l'éradication de la nécessité pour l'angle d'compilateur, ce qui représente 50% du code
À la fin de fo de la journée, AOT(à l'Avance) et JIT(Just-in-Time) faire les mêmes choses. Ils compiler votre Angulaire code de sorte qu'il peut fonctionner dans un environnement natif (aka le navigateur). La principale différence est lors de la compilation se passe. Avec AOT, votre code est compilé avant Application téléchargée dans le Navigateur. Avec JIT, votre code est compilé à l'exécution dans le navigateur.
Ici est la comparaison:

Avantages de AOT: