Y, finalmente, salió Angular 9
¿Qué tal funciona Angular con Ivy?
Seré sincero, Angular últimamente parece estar programado sin brújula (ya ampliaré sobre esto). Pero no lo digo como algo malo del todo, porque al final del día el framework está cada vez mejor. Imagino que estarán al tanto del atraso en la salida de Angular 9, producto del incontrolable motor Ivy. El mismo ya se había pospuesto a salir en Angular 7 y 8 por una razón, pero Angular 9 debía ser la versión de salida oficial del mencionado motor de render. Aunque claro, los planes no siempre resultan y menos con algo tan indomable como Ivy. Angular 9 se atrasó, iba a salir en Octubre/Noviembre y acabó de salir en Febrero. Pero es preferible eso a un motor incompleto, así es el desarrollo, no siempre está sujeto a organigramas ni macanudos.
Rendimiento con Ivy
Lo diré sin vueltas: Ivy es una especie de "revolución coopernicana" a la escala de Angular. Ya saben que cuando se merece una crítica, de mi parte Angular la tiene, pero en esta oportunidad el motor se comporta como la seda. Funciona realmente bien, y el peso de los bundles es el prometido.
Actualizar a Angular 9
Esto que siempre es un problema en esta versión me resultó demasiado fácil, considerando que dedicaron tiempo principalmente en el motor Ivy. Con el comando ng update que tenemos a disposición desde Angular 6 la actualización es 100% automática desde Angular 8 a Angular 9. Así como lo leen, no hace falta estabilizar la versión de TypeScript ni la de RxJS, no hay falta revisar las librerías de Angular ni ninguna cosa rara en el código. Por ejemplo, en esta versión volvieron a cambiar los ViewChild, ¿qué le pasa a Angular con los ViewChild? En Angular 2 funcionaban perfecto, pero en Angular 8 pasaron a agregar un parámetro para determinar si el Child era estático o no. Ahora, en Angular 9, volvimos al sistema de ViewChild original. En fin, por eso hablo de la ausencia de una "brújula", porque de una versión a otra retrotraen cambios que en un principio tampoco se entendían. Como lo del ViewChild debe haber más cambios, pero en Angular 9 se han pasado: Al hacer ng update el propio sistema de Angular corrije todos los problemas de compatibilidad. Doy fe de que, al menos con los ViewChild, esto funciona de mil maravillas. En mi caso, actualicé nuestra app Codize de Angular 8 a Angular 9, y pese a los warnings (que eran de otras librerías, como Capacitor) cuando hice un ng serve se ejecutó sin ningún problema. Lo único, que no les extrañe que en el primer serve migre de es2015 a esm2015 todos los paquetes de Angular, algo asi se verá en la terminal:
Compiling @angular/core : es2015 as esm2015
Si tienen instalados paquetes de Material, dependiendo la cantidad, demorará un poco.
¿Actualizar ahora o esperar?
Por lo que veo la actualización no trae grandes problemas, pese a que hay dependencias que necesitan algunas versiones anteriores del devkit o de typescript, en definitiva los proyectos en angular siguen compilando. En mi opinión lo mejor es emprender la tarea de actualizar todos los proyectos activos que se tengan, empezando por los que funcionan en la web que en este caso tendrían prioridad.
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.