React 18 Vitejs et Razor pages dotnet 8

Angular 18 vient de sortir ! Nouveautés et améliorations

Nous sommes le 23 mai 2024 et un tournant dans angular est arrivé !
Oui, vous m’avez bien lu, un tournant !
zoneless avait annoncĂ© comme but, et ça yest, c’est officiel !
DĂ©couvrons ensemble les nouveautĂ©s d’angular 18 !

Zoneless dans angular 18

Zoneless, c’est un comportement prĂ©vu depuis de nombreuses annĂ©es, qui a mis du temps Ă  ar.
Avant mĂȘme cette Ă©tape, nous pouvions nous passer de zonejs, dans le main.ts, avec le â€˜noop’ mais 
 tout n’était pas prĂ©vu pour ça.

A base de ChangeDetectorRef, d’ApplicationRef, ou tout simplement (sans passer par le ‘noop’ du main.ts pour la zone), nous pouvions dĂ©jĂ  utiliser la stratĂ©gie OnPush.

OK, c’était une premiĂšre belle idĂ©e mais 
 en angular 16 est arrivĂ© un petit nouveau dans angular/core : signalEt ça y est, nous avions un avant et un aprĂšs.

Les signaux ont été créés spécifiquement pour ça : laisser le composant / le service prévenir un template du changement / de la notification !

Ainsi, plus besoin de zone.js pour tout dĂ©tecter en background, trop souvent, avec des hypothĂšses de mise Ă  jour qui pouvaient ĂȘtre erronĂ©es, ..

Paramétrage

On ajoute le provideExperimentalZonelessChangeDetection()

Et on supprime zone.js, d’angular.jon

Mise Ă  jour du template

Le template va ĂȘtre mise Ă  jour suivant les cas suivant :

  • markForCheck (automatiquement mis grĂące Ă  l’AsyncPipe par exemple)
  • setInput du composant
  • .set sur un signal abonnĂ© sur la vue
  • S’attacher Ă  une view marquĂ©e en dirty

Coalescing par défaut

Pour rĂ©duire le nombre de cycles de dĂ©tection de changement, on peut regrouper certains Ă©vĂ©nements, c’est le coalescing.

Attention, ne pas le mettre par dĂ©faut dans les anciennes applications, sous peine de voir apparaĂźtre des bugs / rĂ©gressions !

Exemple

avec le coalescing Ă  false, nous avons ceci dans la console (regardez les trigger).

C’est à cause du bubble event.

Avec le coalescing d’angular 18 par dĂ©faut Ă  true, nous avons maintenant :

Moins de détection de changement de déclenchées !

defer est stable !

@defer Ă©tait apparu dans la version angular 17. Et c’était un moyen extra-ordinaire pour diminuer la taille du bundle ! Les composants appelĂ©s dans @defer sont en lazy ! donc leur bundle sont sur le serveur, au dĂ©marrage de l’application !

Vous pouvez diminuer drastiquement la taille du bundle initial ! CouplĂ© au lazy loading 
 c’est tellement puissant! ❀

Le support natif avec zoneless de l’async await !

Avant la version 18 d’angular, et le zoneless, zoneless ne pouvait pas tracker le async await, et la cli Ă©tait obligĂ© de redescendre Ă  l’utilisation des Promise.

Maintenant, si on crĂ©e un projet en v18, avec la zone less, async/await est supportĂ© nativement par la cli !

Ne fonctionne que si zone.js est exclu de polyfill du fichier angular.json.

Material 3 est disponible

Rendez-vous sur https://material.angular.io/

La signal API en cours de dev

signal, computed, effect, untracked, tout ça c’est stable.
Mais, en 17.2 et 17.3 sont apparus : input, input.required, output, viewchild, model, qui font dire “au revoir” aux directives @Input, @Ouput, 


Tout n’est pas encore stable, attendons quelques versions mineures !

Et aussi

ng — version pour la CLI

ng version existe toujours, mais ça nous liste tout.
Si on veut juste la version : ng --version nous donne la version en cours.

ajout de ng dev

alias de ng serve. ng dev est sans plus facile Ă  lire.

Migration de vite vers le nouveau moteur de package systĂšme

Seule la partie dev-server de Vitejs a Ă©tĂ© dĂ©placĂ©e.

Suppression de ng doc

Peu voire pas du tout utilisĂ©, (et pourtant, couplĂ©e avec compodoc, c’était vraiment pratique), ils-elles ont dĂ©cidĂ© de l’enlever.

Pas de génération du fichier index.hml en SSR

Plus de gĂ©nĂ©ration de ce fichier. A la place, un fichier index.csr.html (index.server.html) est Ă©mis.

Tout ceci pour éviter des problÚmes de reconnaissance du fichier index.hml par les servers / les providers cloud.

On peut redemander de gĂ©nĂ©rer le fichier index.hml, avec le paramĂ©trage : index.

"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"outputPath": "dist/my-app",
"index": {
"input": "src/index.html",
"output": "index.html"
}
}
}
}

Et la suite ?

rxjs optionel

Angular nous annonce que rxjs va devenir de plus en optionel dans le coeur d’angular pour les prochaines versions !
Ca aussi, ça amÚne du changement !

Une déclaration standalone simplifiée

La dĂ©claration et l’appel seront simplifiĂ©es :

  • plus besoin de mettre standalone Ă  true, ça sera par dĂ©faut
  • plus besoin de mettre le composant dans la balise import ! il sera reconnu directement depuis le template !

A trĂšs vite chez devtobecurious pour d’autres news (dotnet 9 arrive dans quelques mois 
 :D)

Et d’ici là, stay curious !

 

Company

About
Press
Blog
Career

Service

Home 
Best place
What to do
Travelers

Terms

Privacy 
Condition
FAQ
Blog

Terms

Privacy 
Condition
FAQ
Blog

All right reserved by visual composer

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639