Anche se ci sono alcune risposte ma vorrei aggiungere anche alcune delle mie scoperte, perché ero davvero confuso con ciò che viene effettivamente compilato come in tutti i casi, TS
-> la JS
conversione avviene. Prendo come riferimento alcuni paragrafi dal blog di Jeff .
JIT
Il TS
codice scritto dallo sviluppatore viene compilato in JS
codice. Ora, questo js
codice compilato viene nuovamente compilato dal browser in modo che html
possa essere renderizzato dinamicamente secondo l'azione dell'utente e di conseguenza i codici per angular
(per i componenti, rilevamento delle modifiche, Dependency Injection) vengono generati anche in fase di esecuzione.
(Il compilatore del browser è ciò che prende le direttive e i componenti di un'applicazione, insieme al loro HTML e CSS corrispondenti, e crea fabbriche di componenti per eliminare rapidamente le istanze con tutta la loro logica di creazione della vista.)
Quando un'applicazione Angular 2 viene avviata nel browser, il compilatore JIT esegue molto lavoro per analizzare i componenti dell'applicazione in fase di runtime e generare codice in memoria. Quando la pagina viene aggiornata, tutto il lavoro che è stato fatto viene buttato via e il compilatore JIT fa il lavoro di nuovo.
AOT
Il TS
codice scritto dallo sviluppatore è compilato in JS
codice, anche questo js
è già stato compilato per angular . Ora, questo codice compilato js
viene nuovamente compilato dal browser in modo che html
possa essere visualizzato. Ma il problema qui è che le funzionalità di angular
sono già state curate dal AOT
compilatore e quindi il browser non deve preoccuparsi molto della creazione dei componenti, del rilevamento delle modifiche, dell'inserimento delle dipendenze. Quindi, abbiamo:
Rendering più veloce
Con AOT, il browser scarica una versione precompilata dell'applicazione. Il browser carica il codice eseguibile in modo che possa eseguire il rendering dell'applicazione immediatamente, senza attendere prima di compilare l'app.
Meno richieste asincrone
Il compilatore integra modelli HTML esterni e fogli di stile CSS all'interno del JavaScript dell'applicazione, eliminando richieste ajax separate per quei file sorgente.
Dimensioni di download del framework angolare più piccole
Non è necessario scaricare il compilatore Angular se l'app è già compilata. Il compilatore è circa la metà di Angular stesso, quindi ometterlo riduce drasticamente il carico utile dell'applicazione.
Rileva prima gli errori del modello
Il compilatore AOT rileva e segnala gli errori di associazione del modello durante la fase di compilazione prima che gli utenti possano vederli.
Migliore sicurezza
AOT compila modelli e componenti HTML in file JavaScript molto prima che vengano offerti al client. Senza modelli da leggere e senza rischiose valutazioni HTML o JavaScript lato client, ci sono meno opportunità di attacchi injection.
Le differenze rimanenti sono già coperte nei punti elenco di Benyamin, Nisar e Gaurang.
Sentiti libero di correggermi