E’ arrivato Angular 9! La nuova versione coinvolge diversi aspetti del framework, da Angular Material alla Command Line Interface(CLI). Questa versione integra di default il nuovo compilatore Ivy, il nome in codice del “next-generation compilation and rendering pipeline“.
Per aggiornare alla versione 9 potete visitare il sito update.angular.io, vi mette a disposizione un form da compilare indicando da quale versione migrate e vi indica cosa dovete fare.
Ivy
Come abbiamo già indicato, con la versione 9 di Angular, tutte le applicazioni fanno uso del compilatore Ivy di default, ciò si traduce in numerosi vantaggi che raccogliamo in una lista per brevità e che dettaglieremo nei prossimi paragrafi:
- Riduzione delle dimensioni delle applicazioni
- Rapidità dei test
- Migliore capacità di debugging
- Migliore “binding” tra classi e stili CSS
- Migliore type checking
- Più comprensibili errori di compilazione
- Migliori tempi di compilazione ed abilitazione dell’Ahead-of-time
- Migliore internazionalizzazione
Riduzione delle dimensioni delle applicazioni
Il compilatore Ivy rimuove automaticamente componenti di Angular che non vengono utilizzate, il cosiddetto tree-shaking, permettendo di ridurre le dimensioni delle applicazioni.
In buona sostanza, rispetto alla versione 8, le applicazione piccole hanno un miglioramento del 40% delle dimensioni, quelle medie hanno minimi miglioramenti (intorno al 2%) e quelle grandi e complesse hanno un miglioramento tra il 25% ed il 40%
Rapidità dei test
E’ stato ristrutturato lo strumento TestBed per renderlo più efficiente. In pratica ora TestBed non ricompila ogni singola componente per ogni test ma la compila solo se la componente è stata modificata, ciò si traduce in un miglioramento delle performance dei test tra il 40% ed il 50%.
Migliore capacità di debugging
Quando un’applicazione viene utilizzata in Dev Mode è possibile utilizzare l’oggetto ng per effettuare il debugging, in pratica:
- puoi chiedere ad Angular di accedere ad istanze delle tue componenti, delle direttive e di molto altro
- puoi richiamare metodi e stati
- puoi richiamare i risultati di un change detection con applyChanges
- è stato migliorata la stack trace ExpressionChangedAfterItHasBeenCheckedError inserendo i link ai riferimenti
Migliore “binding” tra classi e stili CSS
Ora non sono possibili i conflitti nell’applicazione degli stili perchè sono essere programmati in maniera consistente ed efficace. In pratica prima veniva applicato l’ultimo binding valutato, ora l’ordine di precedenza è consistente e verrà applicato il più specifico ([style.color] sarà superiore a [style]). Le regole delle precedenze sono disponibili nella guida ufficiale.
Sono state lasciate invariate, per compatibilità, le funzioni ngStyle e ngClass.
Ora è possibile effettuare il bind di Variabili CSS anche definite Custom Properties.
Migliore type checking
Il compilatore di Angular ora effettua numerose verifiche ed applica regole più stringenti per aiutare i team a trovare i bug durante il processo di sviluppo. In pratica sono state implementate due flag per restringere i controlli:
- fullTemplateTypeCheck : il compilatore verifica qualsiasi cosa nel template ( ngIf, ngFor, ng-template, ecc…)
- strictTemplates: viene attivato il più stringente controllo
Puoi trovare maggiori informazioni sulla guida ufficiale.
Più comprensibili errori di compilazione
Fa parte del miglioramento sullo stack di debug e come già indicato viene semplificato il debug con l’aggiunta di utili informazioni allo stack di errore. Per es. potete andare al seguente link.
Migliori tempi di compilazione ed abilitazione dell’Ahead-of-Time (AOT)
Grazie a Ivy è stato possibile raggiungere un 40% di miglioramento nelle performance di compilazione. Questo può dire che anche i build AOT sono più veloci e vengono forniti anche in ambito dev-mode, ciò vuol dire che anche “ng serve” beneficia dei controlli come se l’applicazione fosse in produzione migliorando sensibilmente l’esperienza degli sviluppatori.
Contestualmente è stata deprecata la variabile entryComponents.
Migliore internazionalizzazione
Ora se sviluppi per più lingue puoi beneficiare di miglioramento di 10 volte delle performance di build perchè il processo di build della componente internazionale è stato spostato più avanti.
Glue Labs e Angular
Utilizziamo Angular dalla sua nascita, realizziamo applicazioni, forniamo formazione avanzata e assistenza specialistica in modalità body rental, training on job e con piani di supporto tecnico. Contattaci subito e senza impegno per un preventivo gratuito.