Angular 9.0 est disponible. Par défaut, toutes les applications vont utiliser le compilateur et le runtime Ivy
L'équipe explique les avantages apportés par ce moteur de rendu
Dans sa version 6.0, le framework JavaScript Angular a été livré avec un nouveau moteur de rendu appelé Ivy. «Vous aimez Angular, mais vous souhaitez juste qu'il soit plus petit, plus facile à déboguer, et compilé plus rapidement? Ce sont nos objectifs avec le nouveau moteur de rendu d'Angular nommé Ivy» expliquait alors Google à propos d'Ivy. Selon l'équipe Angular, ce moteur de rendu est axé sur l'amélioration de la vitesse et accélère la compilation. Ivy faisait la promesse aux développeurs de réduire la taille du code et de leur apporter une flexibilité accrue. L'équipe Angular a indiqué en outre que le passage au nouveau moteur de rendu se ferait en douceur.
Dans la version 9.0 cette fois-ci toutes les applications vont utiliser le compilateur et le runtime Ivy par défaut. L'outil a gagné en maturité. En effet, l'équipe a noté qu'en plus des centaines de corrections de bogues, le compilateur Ivy et le runtime offrent de nombreux avantages:
- tailles de paquets plus petites;
- des tests plus rapides;
- un meilleur débogage;
- une amélioration au niveau des classes CSS et des liaisons de style;
- un vérification de type améliorée;
- une amélioration des erreurs de build;
- un temps de build amélioré, une activation d'AOT par défaut;
- l'amélioration de l'internationalisation améliorée.
Tailles de paquets plus petites
Le compilateur Ivy a été conçu pour supprimer les parties d’Angular qui ne sont pas utilisées via l’arborescence et pour générer moins de code pour chaque composant Angular.
Grâce à ces améliorations, les petites applications et les grandes applications peuvent voir les économies de taille les plus spectaculaires.
- Les petites applications qui n'utilisent pas de nombreuses fonctionnalités Angular peuvent bénéficier le plus du tree-shaking (un terme couramment utilisé dans le contexte JavaScript pour parler de l'élimination du code mort).
- Les grandes applications avec de nombreux composants peuvent bénéficier le plus de la taille d'usine réduite.
- Les applications de taille moyenne devraient voir des tailles de bundle équivalentes ou légèrement plus petites, car elles bénéficient moins du tree-shaking et n'ont pas suffisamment de composants pour bénéficier d'une taille d'usine réduite.
537393
Les petites applications pourraient voir une diminution d'environ 30% de la taille de l'ensemble, les grandes applications verront une diminution de 25 à 40% et les applications moyennes vont observer une diminution minimale
Des tests plus rapides
L'équipe a travaillé sur l'implémentation de TestBed dans Ivy pour la rendre plus efficace.
Auparavant, TestBed recompilait tous les composants entre l'exécution de chaque test, indépendamment du fait que des modifications aient été apportées aux composants (par exemple, par le biais de remplacements) ou non.
Dans Ivy, TestBed ne recompile pas les composants entre les tests sauf si un composant a été remplacé manuellement, ce qui lui permet d'éviter la recompilation entre la grande majorité des tests.
Avec ce changement, les tests d'acceptation de base du framework sont environ 40% plus rapides. L'équipe s'attend à ce que les utilisateurs voient leur propre vitesse de test d'application être environ 40 à 50% plus rapide.
Meilleur débogage
Ivy vous fournit plus d'outils pour déboguer vos applications. Lorsque vous exécutez une application en mode Dev avec le runtime Ivy, il vous est proposé désormais le nouvel objet ng pour le débogage.
- Vous pouvez demander à Angular l'accès aux instances de vos composants, directives, etc.
- Vous pouvez appeler manuellement des méthodes et mettre à jour l'état.
- Lorsque vous souhaitez voir les résultats de la détection des modifications, vous pouvez déclencher la détection des modifications avec applyChanges.
537413
Ivy améliore également la trace de la pile pour les problèmes de débogage tels que ExpressionChangedAfterItHasBeenCheckedError. Auparavant, la trace de la pile pouvait être inutile:
537414
Avec Ivy, vous voyez une trace de pile plus utile qui vous permet de passer directement à l'instruction de modèle avec l'expression qui a changé.
537417
Une amélioration au niveau des classes CSS et des liaisons de style
Le compilateur et le runtime Ivy fournissent des améliorations pour la gestion des styles. Auparavant, si une application contenait des définitions concurrentes pour un style, ces styles se remplaceraient de manière destructive. Avec Ivy, les styles sont fusionnés de manière prévisible.
Considérez les extraits de modèle et de composant suivants: