Aunque hay algunas respuestas, me gustaría agregar algunos de mis hallazgos también, porque estaba realmente confundido con lo que realmente se está compilando, ya que en todos los casos, TS
-> JS
ocurre la conversión. Tomo un párrafo del blog de Jeff como referencia.
JIT
El TS
código escrito por el desarrollador se compila en JS
código. Ahora, el js
navegador vuelve a compilar este código compilado para que html
se pueda representar dinámicamente según la acción del usuario y, en consecuencia, los códigos para angular
(componentes, detección de cambios, inyección de dependencia) también se generan en tiempo de ejecución.
(El compilador del navegador es lo que toma las directivas y los componentes de una aplicación, junto con su HTML y CSS correspondientes, y crea fábricas de componentes para eliminar rápidamente las instancias con toda su lógica de creación de vistas).
Cuando se arranca una aplicación Angular 2 en el navegador, el compilador JIT realiza mucho trabajo para analizar los componentes de la aplicación en tiempo de ejecución y generar código en la memoria. Cuando se actualiza la página, todo el trabajo que se ha realizado se tira a la basura y el compilador JIT vuelve a hacer el trabajo.
AOT
El TS
código escrito por el desarrollador está compilado en JS
código, esto también js
ha sido compilado para angular . Ahora, el navegador vuelve a compilar este js
código compilado para que html
se pueda procesar. Pero, el problema aquí es que el compilador angular
ya se ha ocupado de las características de AOT
y, por lo tanto, el navegador no tiene que preocuparse mucho por la creación de componentes, la detección de cambios o la inyección de dependencias. Entonces tenemos :
Renderizado más rápido
Con AOT, el navegador descarga una versión precompilada de la aplicación. El navegador carga el código ejecutable para que pueda procesar la aplicación inmediatamente, sin esperar a compilar la aplicación primero.
Menos solicitudes asincrónicas
El compilador integra plantillas HTML externas y hojas de estilo CSS dentro de la aplicación JavaScript, eliminando solicitudes ajax separadas para esos archivos fuente.
Tamaño de descarga de marco angular más pequeño
No es necesario descargar el compilador Angular si la aplicación ya está compilada. El compilador es aproximadamente la mitad de Angular, por lo que omitirlo reduce drásticamente la carga útil de la aplicación.
Detecte errores de plantilla antes
El compilador AOT detecta y notifica errores de enlace de plantillas durante el paso de compilación antes de que los usuarios puedan verlos.
Mejor seguridad
AOT compila plantillas y componentes HTML en archivos JavaScript mucho antes de que se sirvan al cliente. Sin plantillas para leer y sin evaluaciones de JavaScript o HTML del lado del cliente riesgosas, hay menos oportunidades de ataques de inyección.
Las diferencias restantes ya están cubiertas en viñetas de Benyamin, Nisar y Gaurang.
Sientase libre de corregirme