HTML come linguaggio per applicazioni
Lo sviluppo web nel 2010 si divide tra due approcci: pagine server-rendered tradizionali, dove ogni interazione richiede un caricamento completo, e applicazioni costruite con jQuery che manipolano il DOM manualmente, con codice che diventa rapidamente ingestibile al crescere della complessità. AngularJS, rilasciato da Google come progetto open source, propone una terza via: trasformare HTML da linguaggio di markup statico a linguaggio dichiarativo per applicazioni web.
L’idea nasce dal lavoro di Miško Hevery e Adam Abrons. Hevery, ingegnere in Google, dimostra internamente che un progetto che aveva richiesto settimane di sviluppo con approcci tradizionali può essere riscritto in una frazione del tempo usando il suo framework. Google decide di supportare il progetto e rilasciarlo pubblicamente.
Two-way data binding
Il concetto centrale di AngularJS è il two-way data binding: un collegamento automatico e bidirezionale tra il modello dati (JavaScript) e la vista (HTML). Quando l’utente modifica un campo di input, il modello si aggiorna automaticamente; quando il codice modifica il modello, la vista si aggiorna di conseguenza. Non serve scrivere codice per sincronizzare manualmente i due livelli.
Questo meccanismo si basa su un ciclo di digest che confronta i valori attuali con quelli precedenti e propaga le modifiche. Per applicazioni con form complessi — tipiche dell’ambito enterprise — il risparmio di codice è significativo.
Direttive, servizi e dependency injection
Le direttive sono il meccanismo con cui AngularJS estende HTML. Attributi personalizzati come ng-repeat, ng-model e ng-show aggiungono comportamenti dinamici direttamente nel markup, rendendo il template leggibile come una descrizione dell’interfaccia piuttosto che come una sequenza di manipolazioni DOM.
L’architettura si completa con i servizi — oggetti singleton che incapsulano logica di business, chiamate HTTP e stato condiviso — e con la dependency injection, un pattern in cui i componenti dichiarano le proprie dipendenze e il framework le fornisce automaticamente. La dependency injection facilita il testing: ogni servizio può essere sostituito con un mock durante i test unitari.
AngularJS introduce anche il concetto di Single Page Application (SPA) nel mainstream: un’unica pagina HTML che carica dinamicamente le viste senza ricaricare l’intera pagina, gestendo il routing lato client.
Pattern enterprise nel browser
AngularJS porta nel browser pattern consolidati nello sviluppo server — MVC, dependency injection, separazione delle responsabilità — offrendo una struttura opinionata dove ogni elemento ha un ruolo preciso. Il framework è rilasciato sotto licenza MIT.
Link: angularjs.org
