AngularJS è un framework JavaScript per lo sviluppo di applicazioni Web client side. Pur essendo relativamente giovane (la versione 1.0 è stata rilasciata nel 2012), il progetto ha riscosso un notevole successo dovuto all'approccio di sviluppo proposto e all'infrastruttura fornita che incoraggia l'organizzazione del codice e la separazione dei compiti nei vari componenti. Non è tuttavia da sottovalutare l'influenza che ha avuto nel successo di Angular il fatto che sia supportato da Google.
In questa guida esploreremo le caratteristiche fondamentali di AngularJS e dell'approccio proposto nello sviluppo di applicazioni Web, analizzando non solo i componenti predefiniti ma sfruttando l'infrastruttura del framework per estenderlo e creare appicazioni avanzate.
Che cos'è AngularJS
AngularJS è un framework, una infrastruttura per la creazione di applicazioni composta da un insieme di funzionalità. Citando la documentazione ufficiale:
Angular è quello che HTML avrebbe dovuto essere se fosse stato progettato per sviluppare applicazioni.
Per raggiungere questo obiettivo, AngularJS da un lato esalta e potenzia l'approccio dichiarativo dell'HTML nella definizione dell'interfaccia grafica, dall'altro fornisce strumenti per la costruzione di un'architettura modulare e testabile della logica applicativa di un'applicazione.
Questi concetti, probabilmente ora un po' astratti, dovranno essere tenuti presenti per comprendere a pieno le potenzialità di AngularJS evitando di utilizzarlo (male) come un'ennesima libreria JavaScript.
Angular fornisce tutto quanto occorre per creare applicazioni moderne che sfruttano le più recenti tecnologie, come ad esempio le Single Page Application, cioè applicazioni le cui risorse vengono caricate dinamicamente su richiesta, senza necessità di ricaricare l'intera pagina. Tra le principali funzionalità a supporto dello sviluppo di tali applicazioni segnaliamo:
- il binding bidirezionale (two-way binding)
- la dependency injection
- il supporto al pattern MVC
- il supporto ai moduli
- la separazione delle competenze
- la testabilità del codice
- la riusabilità dei componenti
Vedremo nel dettaglio ciascuna di queste caratteristiche nel corso delle puntate che seguiranno.
Che cosa non è AngularJS
Abbiamo classificato AngularJS come un framework per lo sviluppo di applicazioni JavaScript e non come una libreria, come possono essere ad esempio jQuery o underscore.js.
La differenza tra una libreria e un framework può apparire sottile, ma è sostanziale per determinare l'approccio alla programmazione da seguire.
Libreria | Framework | |
---|---|---|
Cos'è | È una collezione di funzioni specializzate per un determinato compito (es. manipolazione del DOM, supporto di uno specifico design-pattern, etc.) | È una infrastruttura predisposta alla realizzazione di un'applicazione secondo un determinato approccio |
Come si usa | È il nostro codice a decidere se e quando chiamare le funzioni messe a disposizione | Il nostro codice si inserisce in questa infrastruttura per implementare il comportamento specifico della nostra applicazione. |
In altre parole, a differenza della libreria, non è il nostro codice a chiamare le funzionalità del framework, ma è il framework ad invocare il nostro codice.
Questo aspetto ha dei vantaggi, dato che generalmente un framework ha numerose funzionalità già pronte all'uso, ma può avere degli svantaggi, dal momento che "costringe" a lavorare in un determinato modo. È importante tenerlo presente per valutare se Angular è lo strumento adatto per un determinato progetto o meno.