Ce site utilise des cookies et différents services d'analyse de trafic. Nous partageons également certaines informations sur son utilisation avec nos partenaires des réseaux sociaux.

Si les cookies techniques sont nécéssaires au fonctionnement du site, les autres nécessitent une autorisation de votre part.

13 mai 2019

Angular 8 : les nouveautés

Ce contenu propose une synthèse cadrée et rédigée par Arnaud Leray, Expert Angular chez Niji.

 

Actuellement en Release Candidate, Angular 8 est attendu en version finale pour ce mois-ci (mai 2019).

Voyons donc ensemble ce que nous réserve cette nouvelle version.

 

Bundles optimisés pour les navigateurs modernes

Première nouveauté intéressante : le build des applications génèrera deux bundles séparés : 1 pour les moteurs JS anciens (ES5) et 1 pour les moteurs JS modernes (compatibles ES2015+).

Ainsi, les navigateurs modernes téléchargeront la version optimisée de l'application (plus légère et plus rapide, mais nécessitant des moteurs JS récents), et les navigateurs anciens (type Internet Explorer) téléchargeront la version standard, compatible avec les anciens moteurs).

 

Meilleure prise en charge des Web Workers

Les Web Workers permettent d’exécuter du code JS dans un thread matériel distinct. Cela permet notamment de paralléliser de gros calculs afin de ne pas ralentir l'IHM de votre application.

Le souci avec les Web Workers est que le code qui s'exécute dans le Worker ne peut pas se trouver dans le même fichier JS que le reste de l’application. Angular CLI permettra donc maintenant de gérer cette particularité afin de pouvoir utiliser les Web Workers plus facilement.

 

Rétrocompatibilité du Routeur Angular

Le Routeur d'Angular 8 offrira un mode de rétrocompatibilité permettant de faciliter la mise à jour d'anciennes applications AngularJS (1.x) vers Angular 8. Il sera ainsi possible de lazy loader (charger à la demande) une partie d'application AngularJS au sein d'une application Angular 8 grâce à l'API $route.

Sachant qu'AngularJS (1.x) est actuellement en phase LTS (Long Term Support) et ne reçoit plus que des mises à jour de sécurité, cette API $route devrait permettre d'inciter plus facilement à se lancer dans la mise à jour des applications legacy vers Angular 8.

 

Mise à jour des dépendances

Angular 8 inclura les mises à jour d'outils comme RxJS et TypeScript.

Même si cela peut paraître anecdotique, il est toujours intéressant de supporter les dernières versions des bibliothèques utilisées. RxJS sera ainsi mis à jour en version 6.4, et TypeScript en version 3.3 (voire 3.4 : une Pull Request est en cours).

 

Opt-in pour la télémétrie

Dernière nouveauté : il vous sera possible d'autoriser l'envoi de vos statistiques de télémétrie (comment vous utilisez Angular CLI). En effet, il est intéressant de noter que par défaut, ces statistiques ne seront pas envoyées, et que c'est à vous d'autoriser explicitement l'envoi de ces informations afin d'aider à améliorer l'outil Angular CLI (on peut saluer cette initiative qui ne récupère pas vos informations par défaut comme la plupart des autres outils).

 

Et Ivy ?!

Lors de mon précédent article annonçant la sortie d'Angular 6 (il y a un an : https://www.linkedin.com/pulse/angular-6-les-nouveautes-arnaud-leray/), le nouveau moteur de rendu "Ivy" était déjà attendu !

Rappelons que ce tout nouveau moteur Angular permettra une compilation plus rapide, une réduction de la taille des bundles, de meilleures performances, un meilleur débuggage et une meilleure lisibilité du code généré (tout en restant rétro-compatible). Autant dire que ce nouveau moteur est plus qu'attendu ! (pour plus d'infos, vous pouvez revoir le talk de la Google I/O 2018)

Alors, "Ivy" arrivera-t-il enfin avec Angular 8 ?...

Eh bien… pas tout à fait…

En effet, Ivy n'est pas encore complètement prêt : https://is-angular-ivy-ready.firebaseapp.com/

L'internationalisation (i18n) et Angular Universal ne sont notamment pas encore pleinement compatibles avec Ivy.

Un "opt-in" permet toutefois de tester Ivy avec Angular 8 en ajoutant le flag "enable-ivy" lors de la création d'une application. Pour un projet existant, il suffit de l'ajouter dans la section "angularCompilerOptions" du fichier tsconfig.app.json (https://next.angular.io/guide/ivy)

Cependant, la version finale ne sera pas disponible avant la prochaine version (Angular 9) prévue pour la fin de l'année (octobre/novembre)

 

En résumé

Même si Ivy n'est pas encore vraiment disponible, Angular 8 permet d'avoir un aperçu de ce nouveau moteur, et offre quelques nouveautés intéressantes comme le build optimisé pour les navigateurs modernes, la meilleure prise en charge des Web Workers, ainsi que la mise à jour de RxJS et TypeScript.

Pour mettre à jour votre application, si celle-ci est déjà en Angular 7, une simple commande suffira : ng update @angular/cli @angular/core

Sinon, vous pouvez consulter le site https://update.angular.io/ qui vous permettra de connaître la procédure complète de mise à jour selon la version actuelle d'Angular présente dans votre application.

N'hésitez pas à parcourir le Changelog d'Angular pour avoir le détail de toutes les nouveautés : https://github.com/angular/angular/blob/master/CHANGELOG.md

Contact Relations Presse
Frédéric PAYEN
Directeur Marketing et Communication
presse@niji.fr