SlideShare a Scribd company logo
1 of 20
Download to read offline
Data-binding libera tutti!
 (alla scoperta di AngularJS)

  un talk di Salvatore Laisa per
Tutto comincia da una storia (o due)...
                                      foto di: Hash Milhan (Flickr)
Un inizio al contrario

 Intorno al 2006/2007 lo sviluppo di RIA (le antenate dell App e WebApp)
 crossbrowser era una cosa fattibile solamente attraverso la Flash
 Platform, sopratutto con l’allora poco compreso e utilizzato framework
 Flex. Infatti iniziai con Flash e dopo con Html/Css/Js...
Il declino di Flash e il vuoto da colmare

 Si arriva al 2010 e comincia il declino della Flash Platform, tutti
 entuasiasti di HTML5 per le prime (semplici) cose. Poi i nodi vengono al
 pettine: scarsa compatibilità, no data-binding, in Javascript niente classi,
 no MVC (o pattern in generale)...
E ora che si fa ?!?!




                       foto di: ed_needs_a_bicycle (Flickr)
Arrivano i framework Javascript!
                               http://addyosmani.github.com/todomvc/
I “wanna-be” framework

 jQuery e soci si stavano confermando come tools fondamenteli nel web
 development in quel periodo, tuttavia definirli framework era una un bel
 fraintendimento, in questo caso si parlava di librerie. Comode sì, ma
 librerie. Per chi sviluppava applicazioni mancava ancora qualcosa...
Un vero framework Javascript?

• Simulazione delle classi e OOP (JS è linguaggio a prototipi)


• Templating lato client


• Pochi Kb ma buoni!


• Combinabile con librerie come jQuery & co.


• No componenti (ci sono Bootstrap, jQuery UI o Kendo UI per questo!)
Welcome to the jungle!

 Nel giro di poco tempo ci troviamo sommersi di framework Javascript
 seri che sperano di replicare il successo di jQuery nell’ambito dei design
 pattern. Il più comune fra tutti il pattern MVC.




                                                               “Journey Through The
                                                              JavaScript MVC Jungle”
                                                                - Smashing Magazine
Ne rimarrà soltanto uno?

 Attualmente la community dei web-developers si sta interessando molto
 a Backbone, anche se molti altri framework rimangono delle validissime
 opzioni, specie visto il fatto che ognuna interpreta il pattern MVC a modo
 suo.
Finalmente Angular!
Cos’è AngularJS

 E’ un framework Javascript sviluppato da Google con l’obiettivo di
 rendere le pagine web più simili ad applicazioni. Tra le feature più notevoli
 ci sono l’architettura del codice (MV*), il data-binding, il routing delle viste,
 i moduli e altro ancora.
MVC o MVVM

AngularJS viene definita da Google come una libreria MVC avendo i
classici Model, View e Controller ma il suo modus operandi è molto più
simile al pattern MVVM (Model View View-Model) utilizzato nello sviluppo
di interfacce interattive e dai runtime Silverlight e Flex.




      VIEW                      VIEW-MODEL                    MODEL



   User Interface                Logiche, Eventi                Dati
    (Html, CSS)                   (Javascript)                (JSON)
Inizializzazione (aka: post inclusione)

 Per inizializzare tutta una pagina o solo una parte per lavorare con
 AngularJS dovremo inserire in Html l’attributo speciale ng-app .
Definire una vista e un controller

 Le viste sono normali elementi Html che vengono collegati ad una
 funzione Javascript che farà da controller con l’attributo ng-controller.
 Ogni controller dovrà avere un argomento $scope che sarà responsabile
 di collegare queste due entità.
BAM! Data-binding!

 L’argomento $scope permette di “muovere” i valori tra pagina Html e
 codice Javascript con uno sforzo minimo, ogni variabile o funzione
 (puramente JS) creata al suo interno sarà accessibile in Html con
 un’espressione di abbinamento {{oggetto}} .
Il lato oscuro di AngularJS
Che cosa c’è che non va?

• La documentazione puzza


• Al primo impatto molte task semplici non lo sono


• Si sporca l’HTML!


• I cambi di viste non sono facilmente animabili


• Ho già detto che la documentazione puzza?
Quindi è meglio o peggio di Backbone?

 Solo un folle risponderebbe “si” o “no” a questa domanda.




 e a questo punto....
GRAZIE!   Domande? Risposte?




 @moebiusmania | www.salvatorelaisa.net




                                          font utilizzato: Roboto Sans

More Related Content

What's hot

Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETStefano Ottaviani
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
MVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.MicroMVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.MicroMarco Amendola
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleMarco Breveglieri
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsAndrea Dottor
 
Single Page web Application
Single Page web ApplicationSingle Page web Application
Single Page web ApplicationRoberto Messora
 
MEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webMEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webEugenio Minardi
 
Win8@work - Windows 8 e MVVM
Win8@work - Windows 8 e MVVMWin8@work - Windows 8 e MVVM
Win8@work - Windows 8 e MVVMMarco Amendola
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperStefano Ottaviani
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSGiovanni Buffa
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
MVVM Cross <3 Xamarin
MVVM Cross <3 XamarinMVVM Cross <3 Xamarin
MVVM Cross <3 XamarinCorrado Cavalli
 
Delphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingDelphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingMarco Breveglieri
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week BariMichele Aponte
 

What's hot (20)

Ajaxare WordPress
Ajaxare WordPressAjaxare WordPress
Ajaxare WordPress
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
MVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.MicroMVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.Micro
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
AngularJS 2.0
AngularJS 2.0 AngularJS 2.0
AngularJS 2.0
 
Single Page web Application
Single Page web ApplicationSingle Page web Application
Single Page web Application
 
MEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webMEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del web
 
Workshop angular
Workshop angularWorkshop angular
Workshop angular
 
Win8@work - Windows 8 e MVVM
Win8@work - Windows 8 e MVVMWin8@work - Windows 8 e MVVM
Win8@work - Windows 8 e MVVM
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software Developer
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
Presentazione tirocinio
Presentazione tirocinio Presentazione tirocinio
Presentazione tirocinio
 
MVVM Cross <3 Xamarin
MVVM Cross <3 XamarinMVVM Cross <3 Xamarin
MVVM Cross <3 Xamarin
 
Delphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingDelphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del Testing
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week Bari
 

Similar to Data binding libera tutti!

Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsMarcello Teodori
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
Fe04 angular js-101
Fe04   angular js-101Fe04   angular js-101
Fe04 angular js-101DotNetCampus
 
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsClaudio Bosticco
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
Angular framework
Angular frameworkAngular framework
Angular frameworkLuca Modica
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Giuseppe Vizzari
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.l
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsAlberto Brandolini
 
Javascript, il linguaggio (non solo) del web
Javascript, il linguaggio (non solo) del webJavascript, il linguaggio (non solo) del web
Javascript, il linguaggio (non solo) del webPierLuigiZavaroni1
 
Studio e sviluppo di un sito web responsive attraverso Bootstrap
Studio e sviluppo di un sito web responsive attraverso BootstrapStudio e sviluppo di un sito web responsive attraverso Bootstrap
Studio e sviluppo di un sito web responsive attraverso BootstrapDavide Polotto
 

Similar to Data binding libera tutti! (20)

Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 
Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
Fe04 angular js-101
Fe04   angular js-101Fe04   angular js-101
Fe04 angular js-101
 
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applications
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
Angular framework
Angular frameworkAngular framework
Angular framework
 
Html5
Html5Html5
Html5
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
 
Javascript, il linguaggio (non solo) del web
Javascript, il linguaggio (non solo) del webJavascript, il linguaggio (non solo) del web
Javascript, il linguaggio (non solo) del web
 
Html5
Html5Html5
Html5
 
Link. javascript ajax
  Link. javascript ajax  Link. javascript ajax
Link. javascript ajax
 
Studio e sviluppo di un sito web responsive attraverso Bootstrap
Studio e sviluppo di un sito web responsive attraverso BootstrapStudio e sviluppo di un sito web responsive attraverso Bootstrap
Studio e sviluppo di un sito web responsive attraverso Bootstrap
 

Data binding libera tutti!

  • 1. Data-binding libera tutti! (alla scoperta di AngularJS) un talk di Salvatore Laisa per
  • 2. Tutto comincia da una storia (o due)... foto di: Hash Milhan (Flickr)
  • 3. Un inizio al contrario Intorno al 2006/2007 lo sviluppo di RIA (le antenate dell App e WebApp) crossbrowser era una cosa fattibile solamente attraverso la Flash Platform, sopratutto con l’allora poco compreso e utilizzato framework Flex. Infatti iniziai con Flash e dopo con Html/Css/Js...
  • 4. Il declino di Flash e il vuoto da colmare Si arriva al 2010 e comincia il declino della Flash Platform, tutti entuasiasti di HTML5 per le prime (semplici) cose. Poi i nodi vengono al pettine: scarsa compatibilità, no data-binding, in Javascript niente classi, no MVC (o pattern in generale)...
  • 5. E ora che si fa ?!?! foto di: ed_needs_a_bicycle (Flickr)
  • 6. Arrivano i framework Javascript! http://addyosmani.github.com/todomvc/
  • 7. I “wanna-be” framework jQuery e soci si stavano confermando come tools fondamenteli nel web development in quel periodo, tuttavia definirli framework era una un bel fraintendimento, in questo caso si parlava di librerie. Comode sì, ma librerie. Per chi sviluppava applicazioni mancava ancora qualcosa...
  • 8. Un vero framework Javascript? • Simulazione delle classi e OOP (JS è linguaggio a prototipi) • Templating lato client • Pochi Kb ma buoni! • Combinabile con librerie come jQuery & co. • No componenti (ci sono Bootstrap, jQuery UI o Kendo UI per questo!)
  • 9. Welcome to the jungle! Nel giro di poco tempo ci troviamo sommersi di framework Javascript seri che sperano di replicare il successo di jQuery nell’ambito dei design pattern. Il più comune fra tutti il pattern MVC. “Journey Through The JavaScript MVC Jungle” - Smashing Magazine
  • 10. Ne rimarrà soltanto uno? Attualmente la community dei web-developers si sta interessando molto a Backbone, anche se molti altri framework rimangono delle validissime opzioni, specie visto il fatto che ognuna interpreta il pattern MVC a modo suo.
  • 12. Cos’è AngularJS E’ un framework Javascript sviluppato da Google con l’obiettivo di rendere le pagine web più simili ad applicazioni. Tra le feature più notevoli ci sono l’architettura del codice (MV*), il data-binding, il routing delle viste, i moduli e altro ancora.
  • 13. MVC o MVVM AngularJS viene definita da Google come una libreria MVC avendo i classici Model, View e Controller ma il suo modus operandi è molto più simile al pattern MVVM (Model View View-Model) utilizzato nello sviluppo di interfacce interattive e dai runtime Silverlight e Flex. VIEW VIEW-MODEL MODEL User Interface Logiche, Eventi Dati (Html, CSS) (Javascript) (JSON)
  • 14. Inizializzazione (aka: post inclusione) Per inizializzare tutta una pagina o solo una parte per lavorare con AngularJS dovremo inserire in Html l’attributo speciale ng-app .
  • 15. Definire una vista e un controller Le viste sono normali elementi Html che vengono collegati ad una funzione Javascript che farà da controller con l’attributo ng-controller. Ogni controller dovrà avere un argomento $scope che sarà responsabile di collegare queste due entità.
  • 16. BAM! Data-binding! L’argomento $scope permette di “muovere” i valori tra pagina Html e codice Javascript con uno sforzo minimo, ogni variabile o funzione (puramente JS) creata al suo interno sarà accessibile in Html con un’espressione di abbinamento {{oggetto}} .
  • 17. Il lato oscuro di AngularJS
  • 18. Che cosa c’è che non va? • La documentazione puzza • Al primo impatto molte task semplici non lo sono • Si sporca l’HTML! • I cambi di viste non sono facilmente animabili • Ho già detto che la documentazione puzza?
  • 19. Quindi è meglio o peggio di Backbone? Solo un folle risponderebbe “si” o “no” a questa domanda. e a questo punto....
  • 20. GRAZIE! Domande? Risposte? @moebiusmania | www.salvatorelaisa.net font utilizzato: Roboto Sans