Quoi de neuf dans Angular 9.1

Angular 9.1 est arrivé, avec des améliorations de performances et de concurrence pour le compilateur de compatibilité ngcc. Le pipeline de compilation et de rendu Ivy a également retenu l'attention, ce qui a permis de meilleures performances.

Angular 9.1, publié le 25 mars, fait suite à la version Angular 9.0, qui est devenue disponible en tant que version de production le 6 février 2020. La mise à niveau de la version 9.0 vers le cadre populaire basé sur TypeScript fait basculer les applications vers le compilateur Ivy et le runtime par défaut.

Ivy offre une compilation AOT plus rapide ainsi que des lots plus petits, des tests plus rapides et un meilleur débogage. Une amélioration de la liaison de classe et de style CSS est également proposée dans Ivy, ainsi que des améliorations dans la vérification de type, les erreurs de construction et les temps de construction. Fait également partie d'Angular 9  ng update, qui promet d'être un outil plus fiable et informatif pour mettre à jour les applications et leurs dépendances. 

Angular fournit l'injection de dépendances, ce qui est particulièrement utile pour assembler des services de données pour les applications, ainsi que l'utilisation d'un modèle HTML pour composer des composants. Dans Angular, les développeurs composent toujours des composants avec un composant HTML qui se connecte au code TypeScript pour les parties impératives du programme.

Où télécharger Angular 9.1 ou versions précédentes

Vous pouvez télécharger la version de production Angular à partir de GitHub ainsi que les versions bêta. Un guide de mise à jour Angular a été publié, ainsi qu'un guide de mise à niveau vers Angular 9.

Nouvelles fonctionnalités d'Angular 9.1

  • Optimisations des performances pour le ngcc, ainsi que des améliorations de la concurrence et de la fiabilité pour les cas d'utilisation de ngcc monorepo. Le script de post-installation NPM n'est plus recommandé. Avec ngcc, le traitement asynchrone est suspendu si un autre processus a le fichier de verrouillage. Aussi avec ngcc, une capacité d'aplatissement de carte source est capable de charger une arborescence de fichiers source connectés par des cartes source et de les aplatir en une seule carte source. Cette carte source mappe directement du fichier généré final aux sources d'origine référencées par les cartes source intermédiaires.
  • TypeScript 3.8 est pris en charge.
  • L'internationalisation, via i18n, prend désormais en charge les informations locales RTL.
  • Les performances d'Ivy ont été améliorées en supprimant l'argument d'événement inutilisé dans les instructions d'écoute. Auparavant, Ivy générait un $eventargument, même s'il n'était pas utilisé par les expressions d'écoute. Cela pourrait entraîner une génération d'octets inutile. En outre, un correctif de compatibilité pour la vérification des modèles Ivy a été inclus.

Nouvelles fonctionnalités d'Angular 9.0

En plus de faire d'Ivy la valeur par défaut, Angular 9.0 inclut les nouvelles fonctionnalités et améliorations suivantes:

  • De nouvelles options pour providedIn, pour créer un @Injectableservice, incluent platform, qui rend un service disponible dans un injecteur de plate-forme singleton spécial partagé par toutes les applications sur une page, et anyqui fournit une instance unique dans chaque module qui injecte le jeton.
  • Harnais de composants, pour s'assurer que les tests unitaires sont correctement cadrés et moins fragiles. Les détails de mise en œuvre sont résumés.
  • Nouveaux composants permettant l'inclusion des fonctionnalités YouTube et Google Maps dans les applications.
  • TypeScript 3.7 et TypeScript 3.6 sont pris en charge.
  • Les performances ont été améliorées pour eventListeners.
  • Le code de devise par défaut dans CurrencyPipeest désormais configurable.
  • Pour améliorer les performances du moteur de rendu Ivy, les accès répétés à l'état global sont supprimés des instructions i18n lorsque les informations sont déjà disponibles. Ivy obtient également une amélioration des performances de la suppression de SafeDetectioncode supplémentaire . Et le package @ angular / localize peut être ajouté à un projet Angular CLI via ng add.
  • De plus, pour le moteur de rendu Ivy, de meilleurs messages d'erreur sont proposés pour les composants inconnus. De plus, un nouvel indicateur a été ajouté localize-translatequi permet de spécifier les paramètres régionaux source.
  • Pour améliorer les performances dans le noyau, la désinfection devient transformable en arborescence dans le moteur de rendu Ivy. 
  • Également dans Ivy, la vérification de type de modèle a été modifiée pour produire des tests de diagnostic. Cela résout un problème de conception dans lequel le compilateur Angular a produit à la fois des diagnostics TypeScript natifs et son propre format de diagnostic interne, qui n'a pas été optimal.
  • Aussi pour le noyau, Angular ajoute un nouveau schéma de migration, conformément au plan de migration donné.
  • Le NgFormSelectorWarningsélecteur a été supprimé.
  • Pour ngcc (compilateur de compatibilité angulaire), une migration a été ajoutée pour les classes enfants non décorées.
  • Un certain nombre de corrections de bogues ont été apportées pour Ivy, le compilateur, le noyau, le service de langage, ngcc et Bazel.

Nouvelles fonctionnalités d'Angular 8.2

Sortie en août 2019, Angular Version 8.2 comprend:

  • Pour améliorer les performances du compilateur, la copie à partir du prototype est évitée lors du clonage d'un objet. Cela met à jour la fonction de clonage de la classe ApplySourceSpanTransformer, où la boucle for-in a été utilisée, ce qui a entraîné la copie du prototype vers ses propres propriétés, consommant plus de mémoire.
  • Prise en charge de TypeScript 3.5.
  • Compilation des cibles utilisées par les outils Kythe avec le moteur de rendu Ivy. Cela élimine les problèmes de références croisées à des dépendances transitives qui ne sont pas générées, en raison de la façon dont ces dépendances sont chargées par le compilateur hérité.
  • Prise $elementen charge des composants templateet des templateURLfonctions mis à niveau .
  • Pour Bazel, les utilisateurs peuvent désormais transmettre un Bazel CompilerHost personnalisé pour une compilation Angular, prenant en charge le remplacement de l'hôte du compilateur TypeScript.
  • Un certain nombre de corrections de bogues, notamment l'augmentation de la limite de mémoire ngcsous Bazel de 2 Go à 4 Go.

Nouvelles fonctionnalités d'Angular 8.1

  • Des assistants de test sont fournis pour la bibliothèque de mise à niveau / statique qui connectent les injecteurs Angular et AngularJS sans avoir besoin d'un bootstrap complet d'une application hybride.
  • Abandon de l'intégration avec Web Tracing Framework, qu'Angular avait précédemment pris en charge pour les tests de performances. L'équipe de développement Angular a noté que l'intégration n'a pas été maintenue et ne fonctionne probablement pas pour la plupart des applications Angular aujourd'hui. 
  • Mise en œuvre de definitionAndBoundSpan, qui est désormais préférée à definition. La mise en œuvre de definitiona été repensée et simplifiée.
  • Abandon des API de plateforme-webworker. L'inclusion de ce support avait été expérimentale, pour essayer d'exécuter une application entière dans un Web Worker, pour que le contenu Web exécute des scripts d'arrière-plan. Les partisans angulaires ne cherchent plus à faire cela.

Angular 8.1 propose également des corrections de bogues pour l'outil de construction Bazel ainsi que le noyau et le routeur Angular.

Nouvelles fonctionnalités d'Angular 8.0

Les améliorations apportées à Angular 8, publiées en mai 2019, sont les suivantes: