Non un aggiornamento, un nuovo framework
Quando Google rilascia Angular (versione 2), non si tratta di un aggiornamento incrementale di AngularJS: è una riscrittura completa, incompatibile con la versione precedente, che ripensa l’architettura dalle fondamenta. Il nome perde il suffisso “JS” per segnalare la discontinuità. Le ragioni della riscrittura sono concrete: AngularJS mostra limiti strutturali — il ciclo di digest non scala con interfacce complesse, il sistema di scope e controller rende difficile il ragionamento sullo stato, e il framework non è progettato per i nuovi standard del web.
Angular sceglie TypeScript come linguaggio obbligatorio, non opzionale. La decisione è radicale per il 2016: TypeScript è ancora poco diffuso nell’ecosistema frontend. Google scommette che il type checking statico, l’autocompletamento avanzato e il refactoring sicuro giustifichino la curva di apprendimento, specialmente per applicazioni enterprise di grandi dimensioni.
Architettura a componenti
L’unità fondamentale di Angular è il componente: una classe TypeScript decorata con metadati che associa un template HTML e uno stile CSS a un comportamento specifico. Ogni componente gestisce la propria vista e i propri dati, comunicando con gli altri tramite input, output ed eventi. L’architettura elimina i concetti di scope e controller che in AngularJS generavano confusione.
La dependency injection (DI) è integrata a livello di framework: ogni servizio, repository o utilità viene dichiarato come injectable e il framework lo fornisce ai componenti che ne hanno bisogno. Il sistema DI di Angular è gerarchico — servizi diversi possono avere scope diversi, dal globale al singolo componente.
RxJS e reattività
Angular integra RxJS — una libreria per la programmazione reattiva basata su Observable — come meccanismo fondamentale per gestire operazioni asincrone: chiamate HTTP, eventi utente, aggiornamenti di stato. L’approccio reattivo sostituisce le callback e le promise con flussi di dati componibili e trasformabili.
Compilazione AOT
La compilazione Ahead-of-Time (AOT) trasforma i template Angular in codice JavaScript durante la build, invece che a runtime nel browser. Il risultato è un’applicazione che si avvia più rapidamente, con bundle più piccoli e con errori nei template intercettati durante lo sviluppo anziché in produzione. Il framework è rilasciato sotto licenza MIT.
Link: angular.io
