SlideShare a Scribd company logo
Template designed by
AngularJS 101
Mauro Servienti
mauro.servienti@manageddesigns.it
@mauroservienti
Template designed by
Template designed by
brought to you by
Mauro Servienti
CTO, Partner @ Managed Designs
mauro.servienti@manageddesigns.it
@mauroservienti
//milestone.topics.it
//blogs.ugidotnet.org/topics
//github.com/mauroservienti
Microsoft MVP – Visual C#
NServiceBus Trainer & Support
RavenDB Trainer
Agenda
•Introduzione ad AngularJS
•AngularJS le basi fondanti
•AngularJS caratteristiche peculiari
Introduzione ad AngularJS
Applicazioni Web
•Non sono più applicazioni web nel senso tradizionale del
termine;
•Il browser diventa un «mero» contenitore dedicato ad
ospitare una «LOB app»;
• Esattamente come avviene avveniva con Silverlight;
•L’applicazione diventa una vera applicazione
• Considerando poi dove ci sta portando HTML5 questo è ancora più vero
(e.g. Local Storage);
Vademecum/1
•Html5 custom attributes:
• data-ng-*
•Manipolazione del DOM:
• HTML == Xaml
• JavaScript == C#
demo
L’applicazione più
semplice possibile
Vademecum/2
•La «magia» dell’Hash:
• http://localhost/myApplication/#/Foo/Bar
•Per convenzione tutto ciò che è erogato da AngularJS ha il
prefisso «$»:
• $window, $http, $scope, $resource, etc…
• $window??? Perché non window del DOM del browser?
• Testabilità! In AngularJS tutto è pensato per essere testato e mockato;
AngularJS le basi fondanti
Le componenti essenziali
•Application
• Singolare
•Modules
• Plurale
•Controllers & Views
• Plurale
«application»
•Rappresenta l’applicazione;
• Potrebbe essere paragonata al «main»;
•È caratterizzata da un «2 phase startup process»
• Config phase
• Run phase
una ed una sola?
Web Server
<html> pageAngularJS
Application
http request
http response
Browser
«modules»
•L’applicazione è un modulo;
•Non è necessario definire moduli, basta quello
dell’applicazione;
•Paragonabili ad assembly o namespace
•Per organizzare il nostro codice e, ove necessario, renderlo
veramente modulare;
«controllers» & «views»
•Speculari a MVC simili a MVVM;
•Esistono View senza controller: PartialView;
• Controller senza View? Non proprio;
•Il controller non deve assolutamente manipolare il DOM:
• Concettualmente sbagliato;
• Renderebbe impossibile testarlo;
MVVM + MVC + $scope == AngularJS
View Controller
$scope
$scope 2 way data-binding
demo
Diamo un primo sguardo
a quello che abbiamo
visto
$scope inheritance
•Lo $scope padre è ereditato dagli $scope figli;
• Occhio che per come funziona l’«ereditarietà» in JS potrebbe essere un
problema;
• Fate un favore a voi stessi e non giocate con il fuoco;
Main content (ctrl + view + $scope)
Content (ctrl + view + $scope)Menu (ctrl + view + $scope)
«dependency injection»
•Forse avete notato che i «costruttori» dei controller e le
funzioni possono avere delle dipendenze:
•Anche su «roba» nostra;
«$injector»
•AngularJS ha un suo motore di «dependency injection» che
voi state implicitamente configurando
«Purtroppo» è JavaScript
•Quindi DI solo basata sul «nome»;
•Possibilità notevoli: e.g. Decorator;
•Sopravvivenza alla «minification»:
Backend
Ma non proprio solo
WebAPI :-)
Struttura completa della demo
RavenDB
Backend
Services
Queue
(MSMQ)
Web Api
Host
AngularJS
Application
http / ajax
http / requests
SignalR
read
Il nostro focus odierno
«services»
•Dato che abbiamo DI abbiamo anche il concetto di
Singleton e Transient
• Un controller è sempre e per forza «transient»
• Un servizio/componente è sempre «singleton»
«$broadcast»
•È «UI Composition» su tutta la linea;
•Le varie parti che AngularJS ha composto per noi non si conoscono;
•In qualche modo devono comunicare, perché la UI è statefull:
•E dall’altra parte:
demo
Cominciamo a fare le
cose serie :-P
Lepeculiarità
Potenza allo stato puro
«router»
•Forse () vi siete resi conto che «navighiamo» client-side;
•Abbiamo un motore di «routing»;
•Abbiamo un potentissimo plug-in di «routing» che ragiona a
«stati»;
Supporto per le
Regex
Named «views» &
multiple «views»
per state
Named
parameters
«filters»
•Nel secondo esempio:
• ng-repeat=‘d in data’
•Fondamentalmente è un «foreach»
•Ma anche un mix tra una lambda e un linguaggio
funzionale:
• ng-repeat=‘d in data | myFilter: { /* data */ }’
«filters»
•Una sorta di «converter» che partecipa nella pipeline di
binding;
•Possiamo definire i nostri;
•Possono essere concatenati a piacere;
• {{data | fA | fB: 10 | fC: { ‘a’: ‘hi, there’, ‘b’: 2 } }}
«directives»
•Se non ho corso troppo avrete notato una fastidiosa
duplicazione di codice:
• Header con la lista dei comandi in coda;
• Pagina con la lista dei comandi in coda;
•Una «direttiva» ha come scopo quello di costruire un
componente visuale custom:
• Uno UserControl 
«directives»
•Onere di una direttiva è anche quello di nascondere sotto il
tappeto la manipolazione del DOM;
•Una direttiva è composta:
• Da un «controller»;
• Da un template (opzionale, è una view);
• Da una «link» function che è dove avviene la manipolazione del DOM;
• Tante altre cose fuori dal nostro scope attuale;
demo
Adesso spacchiamo!
È stato bello :-) grazie per l’ospitalità!
•Ricordatevi:
• Typescript può essere un buon aiuto, Andrea il 28/2 vi illuminerà su cosa
come e quando;
• Se volete approfondire AngularJS o CQRS fatevi sotto, abbiamo tante date
di formazione in programma;
Cibo grazie! :-)

More Related Content

PDF
Creare API pubbliche, come evitare gli errori comuni
PDF
Web frameworks
PPTX
Slide typescript - xe dotnet - Codemotion Rome 2015
PDF
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
PDF
Blazor per uno sviluppatore Web Form
PDF
Workshop angular
PDF
Applicazioni Web ultra-performanti con Vue.js e Delphi
PPTX
AngularJS – Reinventare le applicazioni web
Creare API pubbliche, come evitare gli errori comuni
Web frameworks
Slide typescript - xe dotnet - Codemotion Rome 2015
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Blazor per uno sviluppatore Web Form
Workshop angular
Applicazioni Web ultra-performanti con Vue.js e Delphi
AngularJS – Reinventare le applicazioni web

What's hot (19)

PPTX
Slide typescript - net campus
PDF
Angularjs
PDF
REST API fantastiche e dove trovarle
PPTX
Cosa c'è di nuovo in asp.net core 2 0
PPTX
Creare API pubbliche, come evitare gli errori comuni
PPTX
CommitUniversity AngularJSAdvanced Andrea Vallotti
PDF
ASP.NET Core - Razor Pages
PPTX
Asp.net web form 4.5 - what's new!!
PPTX
Silverlight m v-vm @ DotNetteria
PPTX
Angular js: routing
PPTX
AngularJS 2.0
PDF
AngularJS-Intro
PDF
Il Web orientato al futuro: Express, Angular e nodeJS
PPTX
Single Page Applications
PPTX
AngularJS: server communication
ODP
Sviluppo applicazioni in Ruby on Rails
PDF
Sviluppo web con Ruby on Rails
PDF
ModulAngular
PPTX
Slide typescript - net campus
Angularjs
REST API fantastiche e dove trovarle
Cosa c'è di nuovo in asp.net core 2 0
Creare API pubbliche, come evitare gli errori comuni
CommitUniversity AngularJSAdvanced Andrea Vallotti
ASP.NET Core - Razor Pages
Asp.net web form 4.5 - what's new!!
Silverlight m v-vm @ DotNetteria
Angular js: routing
AngularJS 2.0
AngularJS-Intro
Il Web orientato al futuro: Express, Angular e nodeJS
Single Page Applications
AngularJS: server communication
Sviluppo applicazioni in Ruby on Rails
Sviluppo web con Ruby on Rails
ModulAngular
Ad

Viewers also liked (20)

PPTX
Win02 bing e windows store apps
PPTX
Presentación CRISTINA MARTÍN Y ALICIA MULERO
DOCX
Bie daaltin ajil 3
PPTX
Prezentacja łeba kluczny
PDF
Extrabacon's sploit core
PPTX
Literatura ecuatoriana
PPTX
American Association of Neurological Surgeons Annual Meeting
PDF
Orden pafde
PPTX
Mob01 mobile services e webapi
PPTX
Preoperative Evaluation of a patient
PPTX
Modelo pedagogico del fcecep
PPT
Presentación bullying
ODP
Contaminación
PDF
Curriculum Vitae Brekoulakis Spyros.
DOCX
Active SWV Article revised
PPTX
Metodo ipler.pptm
PPSX
Presentación educativa (pedagogía)
PPTX
Psicología
PPSX
Joa 9 6
PPTX
Presentac..
Win02 bing e windows store apps
Presentación CRISTINA MARTÍN Y ALICIA MULERO
Bie daaltin ajil 3
Prezentacja łeba kluczny
Extrabacon's sploit core
Literatura ecuatoriana
American Association of Neurological Surgeons Annual Meeting
Orden pafde
Mob01 mobile services e webapi
Preoperative Evaluation of a patient
Modelo pedagogico del fcecep
Presentación bullying
Contaminación
Curriculum Vitae Brekoulakis Spyros.
Active SWV Article revised
Metodo ipler.pptm
Presentación educativa (pedagogía)
Psicología
Joa 9 6
Presentac..
Ad

Similar to Fe04 angular js-101 (20)

PPTX
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
PPTX
Dal requisito all'implementazione @ CD2010
PPTX
ASP.NET MVC: Andare oltre il 100% (Web@work)
PPTX
Alessandro Forte - ASP.Net 4.0
PDF
Web frameworks
PPTX
Brokering over WCF @ dotNetMarche
PDF
Blazor: are we ready for the launch?
PPTX
Come sviluppare applicazioni cross device con HTML
PDF
Node and the Cloud
PPTX
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
PDF
Data binding libera tutti!
PDF
Data binding libera tutti!
PPTX
Blazor with .net 5 - di Gerardo Greco
PDF
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
PPTX
VS Package @ CD2008
PDF
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
PPTX
m-v-vm @ UgiAlt.Net
ODP
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
PDF
Applicazioni HTML5 Superveloci - Salvatore Romeo
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
Dal requisito all'implementazione @ CD2010
ASP.NET MVC: Andare oltre il 100% (Web@work)
Alessandro Forte - ASP.Net 4.0
Web frameworks
Brokering over WCF @ dotNetMarche
Blazor: are we ready for the launch?
Come sviluppare applicazioni cross device con HTML
Node and the Cloud
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Data binding libera tutti!
Data binding libera tutti!
Blazor with .net 5 - di Gerardo Greco
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
VS Package @ CD2008
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
m-v-vm @ UgiAlt.Net
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Applicazioni HTML5 Superveloci - Salvatore Romeo

More from DotNetCampus (20)

PDF
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
PPTX
MICROSOFT E IL MONDO IOT
PPTX
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
PDF
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
PDF
70-483: PROGRAMMING IN C#
PPTX
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
PPTX
TUTTO SU VISUAL STUDIO ALM 2015
PPTX
CONTINUOUS INTEGRATION CON SQL SERVER
PPTX
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PPTX
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
PPTX
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
PPTX
SHAREPOINT 2016 - WHAT'S NEW
PPTX
COSTRUISCI IL TUO DEVICE
PPTX
SVILUPPARE PER MICROSOFT BAND
PPTX
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
PPTX
WINDOWS PHONE APPS IN C++
PPTX
AZURE NOTIFICATION HUB
PPTX
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
PPTX
INTRO TO XAMARIN
PPTX
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
MICROSOFT E IL MONDO IOT
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-483: PROGRAMMING IN C#
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
TUTTO SU VISUAL STUDIO ALM 2015
CONTINUOUS INTEGRATION CON SQL SERVER
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
SHAREPOINT 2016 - WHAT'S NEW
COSTRUISCI IL TUO DEVICE
SVILUPPARE PER MICROSOFT BAND
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
WINDOWS PHONE APPS IN C++
AZURE NOTIFICATION HUB
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
INTRO TO XAMARIN
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT

Fe04 angular js-101