Angular raggiunge la sua nona versione, probabilmente la più attesa dopo la quarta! Cosa cambia? Per noi sviluppatori veramente poco, ma le novità ci sono: sono solo nascoste. Vediamole assieme in breve!

Ivy: nuovo renderer, stessa API

Il cambiamento più importante è senza ombra di dubbio l’introduzione di Ivy, il nuovo renderer già presente in modo opzionale nella versione 8, ora stabile e utilizzato di default. Se non sapete cosa sia il renderer, non stupisce: il team ha dimostrato l’ottimo lavoro iniziato già con la prima versione di Angular (2) rendendo questa entità quasi trasparente ai nostri occhi! Si tratta di ciò che legge i componenti che scriviamo e li trasforma magicamente in istruzioni per il DOM (ciò che vediamo nella pagina HTML). Ecco cosa cambia in sostanza:

  • Le vostre applicazioni pesano meno (fino al 40% in caso di app molto grandi)
  • Le vostre applicazioni sono più veloci
  • ng serve utilizza il compilatore AOT (rivelando errori che prima vedevate solo in fase di build)
  • Miglioramento del Type-checking nei template (maggiori info)
  • Miglioramento della parte di internazionalizzazione (i18n)

Detto ciò, potreste incappare in piccoli errori nei vostri vecchi template (si tratta di inezie, ma va detto) quindi se ne avete voglia, qui trovate maggiori informazioni.

Breaking Changes & deprecations

Qualche Breaking Change doveva pur esserci trattandosi di una major release, ma ritorno a complimentarmi con il team per averli mantenuti al minimo. Si tratta di inezie come:

  • Rimozione del selettore ngForm in favore di ng-form (mai usato personalmente)
  • Rimozione di vecchio codice deprecato, come Renderer e FormsModule.withConfig (idem)

Viene deprecato il metodo TestBed.get() in favore del nuovo TestBed.inject() per i test, che a differenza del primo è type-safe. Per la lista completa delle deprecations nelle prossime versioni, cliccate qui.

ViewChild

Se in Angular 8 dovevamo specificare { static: true|false } nel decoratore @ViewChild, nella versione 9 questo oggetto diventa opzionale ed è { static: false } di default.

providedIn: ‘platform’|’any’

Fino alla versione 8, i valori possibili per providedIn (nella definizione di un Injectable) erano solo:

  • 'root': indica che il servizio deve essere Singleton a livello di app
  • Un qualsiasi modulo (Angular utilizza l’injector di quel modulo)

Con la versione 9 abbiamo due nuove possibilità:

  • 'platform': un po’ come ‘root’, ma viene inserito in un particolare Injectable al di fuori dell’app. In questo modo, se avete più app Angular nella stessa pagina roba da matti!), il servizio sarà Singleton e condiviso per entrambe
  • 'any': in questo caso, verrà creata una nuova istanza del servizio per ogni modulo che lo richieda (inclusi quelli lazy-loaded). Utile!

Conclusioni

La brevità di questo articolo rispecchia l’ottimo lavoro del team: c’è veramente poco da fare. Chiunque dica che Angular cambia spesso, cambi idea. Però, come sempre, per i vostri progetti in produzione consiglio di aspettare almeno la versione 9.1 per essere più sicuri (anche perché molte librerie devono ancora adeguarsi).

Per il changelog completo, clicca qui.

Ti è piaciuto l’articolo? Condividilo!

Rilasciare risorse gratuite non è facile: un sacco di tempo vola fra la ricerca dell’idea, la stesura, la preparazione di codice funzionante e la revisione. Se ti piace ciò che facciamo, condividi l’articolo: nel peggiore dei casi ti daranno del secchione!

Ti interesserà anche…

Angular

Creazione di Guardie per i Moduli

I moduli sono una delle feature che più amo di Angular: ci permettono di racchiudere componenti, servizi, pipe e direttive all’interno di un unico contenitore. Ma non si tratta soltanto…
Angular

NgRx: cosa cambia nella versione 8

L’ottava versione di NgRx ha portato molti cambiamenti interessanti che ci consentono di scrivere codice più pulito e più snello. E c’è anche qualche chicca che vale la pena di…
Angular

CoreModule contro providedIn

Da tempo siamo abituati a creare nelle nostre applicazioni Angular un modulo specifico: CoreModule, ovvero il modulo che “sgrassa” AppModule consentendoci una maggiore pulizia. Ma ha ancora senso usarlo, ora…

Iscriviti alla nostra newsletter!

Rimani aggiornato per quando rilasceremo nuovi articoli, nuovi corsinuove promozioni e nuove risorse gratuite. Ti promettiamo che useremo la tua email con prudenza, e non la condivideremo con nessuno senza il tuo consenso!

Abbiamo a cuore la tua privacy. Niente spam. Leggi la nostra privacy policy qui.

Menu