Qué hay de Nuevo en Angular 8
La nuevo versión ya está a la vuelta de la esquina, ¿qué esperar de Angular 8?
Desde el año pasado que hay 3 momentos importantes en el año para quienes deseamos estar actualizados. Uno es en Octubre, con la salida de la versión anual de Odoo; pero para el diseño de WebApps sin duda dos momentos de sumo interés son Abril/Mayo y Septiembre, ya que salen las dos versiones anuales de Angular. Nos encontramos en esas fechas, la versión de Angular 8 ya entró en RC, por lo tanto solo quedan un par de semanas de debug para que salga la estable. Desde Angular 6, este evento tiene cierto interés por el prometido motor de Render Ivy. Se atrasó para salir con Angular 7, y volvió a atrasarse para salir en Angular 8. Sin embargo, aún tendremos que esperar hasta Angular 9, puesto que en Angular 8 lo que ha sido liberado es una versión preview de Ivy. Algo es algo.
Angular 8 parece centrarse en dos cosas: Optimización y Compatibilidad. Optimización de la mano de mejoras en Bazel (la versión Open Source de Blaze) y desde la preview de Ivy; Compatibilidad con la búsqueda de atraer antiguos desarrolladores de Angular 1.5 para que migren a Angular 2+. ¿Qué hay de nuevo?
Carga Diferencial del JavaScript
Algo interesante en Angular es la opción de compilar código. Lejos han quedado los días en los que comprimíamos JavaScript y CSS para que pese lo menos posible, teniendo dos versiones de todo el código. La web está cambiando para bien, y Angular está en ese camino. Pero adeudaba algo de consideración, al menos en mi opinión, y es adaptarse a las últimas posibilidades de ECMAScript. A partir de ECMAScript 2015 se produjo un cambio sustancial en la optimización del código, que se nota mucho cuando se trabaja con interactivos complejos (nuestro caso, por ejemplo). La realidad es que los navegador que se benefician de ECMAScript 2015+ tienen una posibilidad de eficiencia mucho mayor. Actualmente es claro que el porcentaje de navegadores con ES2015+ son mayoría pero, el porcentaje restante no es para nada menor. Por tal motivo, a partir de Angular 8, se compilarán dos bundles distintos que se ejecutarán en la App de acuerdo a la versión de ECMAScript. Esto promete mejorar el rendimiento de una App en navegadores modernos.
La preview de Ivy
Ya lo dije, no es una versión como lo fue Angular 6, con cientos de features nuevas. Aún así, la preview de Ivy es la más resonante, y la que más interés personal me produce para investigar. El motor de render Ivy fue presentado en Angular 6 como la gran novedad, haciendo uso de sistemas de compilación modernos como el tree-shaking se propone achicar el peso de los bundles generados, entre otras cuestiones. Se atrasó a la versión 7 y ahora en la versión 8 podemos disfrutarlo como un sistema de compilado opcional. Por eso lo llaman "opt-in preview". Según la gente encargada, Ivy está desarrollado en un 90% ¿Qué trae entonces la versión de Ivy de Angular 8? Básicamente, promete que el código generado será de fácil lectura para debugear (hoy día es una tarea titánica leer un código compilado de Angular), mayor velocidad en los re-builds, menor tamaño de archivos, verificación de templates y compatibilidad. Según las pruebas realizadas con un ejemplo "Hola Mundo", cuyo peso utilizando no-zone.js ronda los 36 Kb, con Ivy logra pesar tan solo 10 Kb, lo cual da un aproximado de 7.3 Kb si es minificado y 2.7 Kb comprimido. Cuando probamos Ivy en Angular 6 hace un año el peso producido no eran tan menor (especialmente en aplicaciones del mundo real). Pero parece ser que Ivy ha alcanzado ese estado de madurez y viene pisando fuerte. En Angular 8 podremos probarlo casi en su totalidad, aunque no se recomienda para aplicaciones que requieran cierto nivel de estabilidad, con vistas a liberarlo como motor por default en Angular 9. No obstante, se comenta que la gente de Angular está concentrada en garantizar la compatibilidad al migrar apps en versiones entre la 2 y la 5 en general, y de la 1.5 hacia atrás en particular (aún quedan muchas WebApps realizadas con Angular 1.5 y se está buscando que los desarrolladores las migren). Así que, ¿quien sabe? a lo mejor Ivy se atrasa hasta Angular 10.
Compatibilidad con las Routes de Angular
Lo dicho, la gente de Angular quiere que se migren proyectos de Angular 1.5 (AngularJS) a las últimas versiones, pero la queja de los desarrolladores es razonable también. No hay formas cómodas de migrar a Angular 2+ desde AngularJS. Por tal motivo, los esfuerzos del equipo de desarrolladores están puestos en la compatibilidad. En esta ocación, se implementan nuevas formas de migrar las rutas (routes) de AngularJS (especialmente en proyectos grandes) a Angular 8.
Actualización de Dependecias
Ya desde la versión 7 que Angular no se quiere quedar atrás con TypeScript, RxJS y Node. Angular 8 se encuentra en la vanguardia de las últimas versiones de sus dependencias, por lo que podemos esperar de disfrutar de las últimas novedades en TypeScript y ReactiveX también con Angular.
Bug Fixes
Lo normal en un framework: corregir bugs. Hay varios detalles que puede ser de interés para más de uno, pero no podemos listarlos de forma cómoda así que mejor consultar el changelog oficial.
Dejamos, a modo de complemento, uno de nuestros videos explicando un poco todo esto de forma más visual:
Acerca de:
Ignacio Buioli
Licenciado en Artes Multimediales. Ha desarrollado numerosos proyectos de Multimedia así como también escrito artículos y traducido textos del mencionado tema. En Moldeo Interactive es Socio y Programador; encargándose, además, de gran parte de las redes y los cursos online.