SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado

ModulAngular
ModulAngularModulAngular
ModulAngularextrategy
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular jsRiccardo Cardin
 
CommitUniversity AngularJSAdvanced Andrea Vallotti
CommitUniversity  AngularJSAdvanced Andrea VallottiCommitUniversity  AngularJSAdvanced Andrea Vallotti
CommitUniversity AngularJSAdvanced Andrea VallottiCommit University
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
 
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagram
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagramIl linguaggio UML - Teoria ed esempi pratici sugli use case diagram
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagramGiuseppe Cramarossa
 
Lezione 8 - Teoria - Progettare una base di dati
Lezione 8 - Teoria - Progettare una base di datiLezione 8 - Teoria - Progettare una base di dati
Lezione 8 - Teoria - Progettare una base di datiGiuseppe Cramarossa
 
AngularJS: server communication
AngularJS: server communicationAngularJS: server communication
AngularJS: server communicationVittorio Conte
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RGiuseppe Cramarossa
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreAndrea Dottor
 
Introduzione a Microsoft Azure
Introduzione a Microsoft AzureIntroduzione a Microsoft Azure
Introduzione a Microsoft AzureRoberto Albano
 

Destacado (15)

Gui Report Studio in java
Gui Report Studio in javaGui Report Studio in java
Gui Report Studio in java
 
ModulAngular
ModulAngularModulAngular
ModulAngular
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular js
 
AngularJS-Intro
AngularJS-IntroAngularJS-Intro
AngularJS-Intro
 
CommitUniversity AngularJSAdvanced Andrea Vallotti
CommitUniversity  AngularJSAdvanced Andrea VallottiCommitUniversity  AngularJSAdvanced Andrea Vallotti
CommitUniversity AngularJSAdvanced Andrea Vallotti
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagram
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagramIl linguaggio UML - Teoria ed esempi pratici sugli use case diagram
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagram
 
Lezione 8 - Teoria - Progettare una base di dati
Lezione 8 - Teoria - Progettare una base di datiLezione 8 - Teoria - Progettare una base di dati
Lezione 8 - Teoria - Progettare una base di dati
 
AngularJS: server communication
AngularJS: server communicationAngularJS: server communication
AngularJS: server communication
 
Angular js: routing
Angular js: routingAngular js: routing
Angular js: routing
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-R
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET Core
 
Introduzione a Microsoft Azure
Introduzione a Microsoft AzureIntroduzione a Microsoft Azure
Introduzione a Microsoft Azure
 
Microsoft Azure
Microsoft AzureMicrosoft Azure
Microsoft Azure
 
Angularjs
AngularjsAngularjs
Angularjs
 

Similar a 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 a 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
 

Más de Appsterdam Milan

Más de Appsterdam Milan (18)

App Store Optimisation
App Store OptimisationApp Store Optimisation
App Store Optimisation
 
iOS Accessibility
iOS AccessibilityiOS Accessibility
iOS Accessibility
 
Lean Startup in Action
Lean Startup in ActionLean Startup in Action
Lean Startup in Action
 
Giocare con il fuoco: Firebase
Giocare con il fuoco: FirebaseGiocare con il fuoco: Firebase
Giocare con il fuoco: Firebase
 
Data visualization e fitness app!
Data visualization e fitness app!Data visualization e fitness app!
Data visualization e fitness app!
 
iBeacon, il faro a bassa energia...
iBeacon, il faro a bassa energia...iBeacon, il faro a bassa energia...
iBeacon, il faro a bassa energia...
 
Facciamo delle slide migliori!
Facciamo delle slide migliori!Facciamo delle slide migliori!
Facciamo delle slide migliori!
 
Fitness for developer
Fitness for developerFitness for developer
Fitness for developer
 
Follow the UX path
Follow the UX pathFollow the UX path
Follow the UX path
 
Dalla black box alla scatola nera
Dalla black box alla scatola neraDalla black box alla scatola nera
Dalla black box alla scatola nera
 
Java Search Engine Framework
Java Search Engine FrameworkJava Search Engine Framework
Java Search Engine Framework
 
iOS design patterns: blocks
iOS design patterns: blocksiOS design patterns: blocks
iOS design patterns: blocks
 
Multithreading in Java
Multithreading in JavaMultithreading in Java
Multithreading in Java
 
Speech for Windows Phone 8
Speech for Windows Phone 8Speech for Windows Phone 8
Speech for Windows Phone 8
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Interfacciamento di iPhone ed iPad
Interfacciamento di iPhone ed iPadInterfacciamento di iPhone ed iPad
Interfacciamento di iPhone ed iPad
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Appsterdam Milan Winter Launch
Appsterdam Milan Winter LaunchAppsterdam Milan Winter Launch
Appsterdam Milan Winter Launch
 

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