Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=1ae9d033-68e6-4331-a87a-acd0a7583f05

Angular 8 ya está aquí: ¿Qué trae nuevo?

Icono de advertencia ATENCIÓN: este contenido tiene más de 2 años de antigüedad y, debido a su temática, podría contener información desactualizada o inexacta en la actualidad.

Imagen ornamental con el logo de Angular

Hace unos días, el pasado 28 de mayo, salió oficialmente la versión 8.0 de Angular. Como seguramente sepas, Angular utiliza el versionado semántico, que básicamente se resume en lo siguiente:

  • Versión major: se esperan cambios que puedan romper antiguas versiones y es probable que se requieran de ciertos pasos (manuales o automáticos) para actualizar la aplicación.

  • Versión minor: se pueden introducir pequeñas novedades pero siempre con retrocompatibilidad con versiones anteriores.

  • Versión patch: básicamente introducen soluciones a bugs conocidos.

Además, Angular se compromete a lanzar una nueva versión "major" cada 6 o 7 meses, haga falta o no (como en el chiste 😆), aunque en esta ocasión han tardado más de lo esperado.

Esta versión 8.0 simboliza un cambio "major" porque han eliminado definitivamente la primera versión del componente para comunicaciones denominado @angular/http, que estaba marcado como obsoleto pero ahora ya no existe. Además, para poder utilizar @ViewChild y @ContentChild ahora es necesario un parámetro adicional que no se solicitaba en las  versiones anteriores. Pero, quitando estos dos "breaking changes", como podrás ver a continuación los cambios introducidos son más bien pocos aunque muy interesantes y  centrados sobre todo en la mejora de rendimiento.

Vamos a verlos...

Carga diferencial

En mi opinión, el cambio más importante que recibe Angular en esta versión quizás sea la Carga Diferencial o "Differential Loading". Esta característica le permite a Angular compilar dos tipos de paquetes o "bundles" y, dependiendo de la versión del navegador que se esté utilizando, servirle uno u otro paquete sirviéndose de la tecnología ES6 Modules.

El principal beneficio de esto es que puedes seguir dando soporte a versiones antiguas de navegadores mientras que en las nuevas versiones puedes entregar una aplicación más liviana y menos compleja del código, ya que no tienes que adaptar funcionalidades no soportadas por el navegador antiguo ni incluir polyfills tampoco.

El resultado práctico final de estas mejoras es una reducción del tamaño de la aplicación, según el equipo de Angular entre un 7% y un 20%, dependiendo de las funcionalidades que se usen en el proyecto.

Ganancia de rendimiento de Angular.io tras recompilarlo con Angular 8

Lo mejor de todo es que tú como desarrollador no vas a tener que configurar nada, ya que a partir de la versión 8 este será el comportamiento por defecto de Angular cuando hagas el paso de compilación.

Así que solo por el hecho de actualizarte a Angular 8 desde una versión anterior obtienes un beneficio de manera automática con solo recompilar la aplicación.

Novedades en la API de Angular CLI

A partir de ahora si estás construyendo una librería para Angular con la versión 8, podrás extender los hooks de ng build, ng test y ng run.

Cambios en el Lazy loading

Si has trabajado algo con Angular seguramente hayas probado a cargar módulos a través de lazy loading, también llamada carga diferida, con el fin de reducir el tamaño inicial de tu aplicación y aumentar la velocidad de carga inicial.

La forma de hacerlo a partir de ahora cambia un poco con el fin de que sea un poco más estándar y se adecúe a lo que se hace en la industria como un estándar informal.

Por ejemplo si hasta ahora tenías:

{
 path: '/dashboard,
 loadChildren: './dashboard/dashboard.module#DashboardModule'
}

A partir de la versión 8 lo escribirás de la siguiente forma, con una Promise:

{
 path: `/dashboard`,
 loadChildren: () => import(`./dashboard/dashboard.module`).then(m => m.DashboardModule)
}

Como puedes ver el cambio no supone un gran impacto, pero sí que deberás actualizar tu aplicación si usas esta técnica de carga en diferido.

Soporte para Web Workers

Los Web Workers son una estupenda tecnología que forma parte de HTML5 y que nos permite crear tareas en segundo plano (en otro hilo de ejecución) dentro del navegador. Son una estupenda solución para ejecutar tareas que son muy intensivas en uso de CPU sin afectar a la responsividad de la interfaz de usuario, evitando que se bloquee. Se utilizan, por ejemplo, para hacer manipulación de imágenes y de vídeo en tiempo real (si tienes interés se explican a fondo en nuestro curso de Especialista en programación web con HTML, CSS, JavaScript y jQuery.

En Angular 8 la herramienta de línea de comandos (angular-cli) te permite añadir web workers a tu proyecto con un simple comando:

ng generate webWorker mi-web-worker

y posteriormente podrás utilizarlos desde la aplicación siendo reconocidos para crear el bundle y hacer correctamente la separación de código:

const miWorker = new Worker('./mi-web-worker', {type: 'module' });

Más información sobre esto en la documentación oficial.

Resumiendo

Así de simples son los cambios más interesantes que trae consigo la nueva versión de Angular.
Como puedes ver no son muchos y quizá te estés preguntando dónde está ese famoso nuevo motor de renderizado de componentes llamado Ivy del que se lleva tanto tiempo hablando. Por ahora nos tocará esperar un poco pues todavía no está listo, aunque parece que definitivamente (¡por fin!) aparecerá con Angular 9 hacia finales de este año 2019. Esta futura versión tiene toda la pinta de que va a ser tremendamente interesante y que de verdad va a traer grandes cambios. Estaremos atentos para poder formarte a fondo en todas las novedades de Angular 9.

Fecha de publicación:
David García Valiñas David García es ingeniero informático y Web Technologies Google Developer Expert. Domina diferentes tecnologías: Java, JavaScript, TypeScript, Unity, Angular... y posee una amplia experiencia en desarrollo web, aplicaciones de escritorio y videojuegos. En la actualidad trabaja para IBM Research en Nueva York. Puedes seguirlo en Twitter: @tansitos Ver todos los posts de David García Valiñas
Archivado en: Desarrollo Web

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (1) -

Excelente noticia.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.