SlideShare uma empresa Scribd logo
1 de 23
WEB05 - SINGLE PAGE
APPLICATIONS: COME?
COSA? PERCHÉ?
Roberto Messora
roberto@messora.com - @robymes

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Grazie a
Sponsor

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Agenda
•

Cosa

•

Perché

•

Come
 Considerazioni sulla Sicurezza: il mostro della palude, quando client e
server non possono essere sviluppati a sentimento
 Patterns, patterns, patterns: che barba, che noia
 Test: se ne parla sempre alla fine

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Prima di tutto: di cosa
non parleremo
Mettiamo le mani avanti

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Di cosa parleremo
Siamo dev dopo tutto

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Cosa
•

SPA è l’acronimo di Single Page (Web) Application

•

Si riferisce in genere ad un’applicazione web in cui l’intera
esperienza utente è erogata tramite una unica pagina,
spesso ricca e complessa

•

Una SPA si caratterizza lato client per l’utilizzo di
tecnologie di ultima generazione:
 HTML5
 CSS3
 Javascript

•

Parlando di SPA non va sottovalutato il back-end lato server

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Perché
•

La ragione principale per scegliere di sviluppare una SPA sta nella
ricchezza dell’esperienza utente erogata:
 L’uso di chiamate Ajax Javascript asincrone verso il back-end permette di
interagire con il server senza fastidiosi refresh della pagina, lasciando percepire
da parte dell’utente l’applicazione web come più responsiva, più veloce
 Le nuove tecnologie visuali web lato client (CSS3, Canvas, ecc.) supportate dai
browser di ultima generazione, permettono una esperienza utente
praticamente identica a quella di un’applicazione desktop
 Praticamente ogni sito web fra i più utilizzati è strutturato come una SPA
(Facebook, Twitter, …), l’utente si aspetta una esperienza utente simile
 Una SPA permette una migliore usabilità di un sito web in formato mobile
perché a seguito del primo accesso permette di ridurre al minimo l’uso della
linea dati perché evita di dover scaricare la UI ad ogni post-back

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Come: una scelta difficile
• Non

SPA:

esiste un modo univoco per sviluppare una

 Esistono decine di framework Javascript su cui è possibile
basare una SPA (fare un giro su http://todomvc.com/ per
rendersene conto)
 Sono molteplici anche le opzioni di tecnologia utilizzabile
lato server, ad esempio varie declinazioni dello stack
ASP.NET (classico + WCF, MVC) oppure Node.JS, quasi
sempre implementati come endpoint di servizi REST/JSON
 Esiste anche la possibilità di utilizzare basi dati non
relazionali che forniscono nativamente un accesso REST
alle proprie funzionalità di query e archiviazione
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
demo
Da zero a SPA in 30 secondi netti

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Come: sicurezza, il mostro della
palude

Cookies

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Browser Dev
Tools
demo
Cookies e F12 (no, non sono i biscotti dei Top Gun)

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Come: sicurezza, le regole
•

Regola Numero 1: Javascript e sicurezza sono due concetti
estremamente distanti soprattutto quando nel browser hai a
disposizione il tasto F12

•

Regola Numero 2: Qualsiasi decisione di design di una SPA
parte dall’aver imparato la Regola Numero 1

•

Regola Numero 3: Alle luce della Regola Numero 1 e della
Regola Numero 2 si evince che una SPA non è quasi mai
composta da una unica pagina (quindi una SPA non è una
SPA…)

•

Regola Numero 4: usare SEMPRE HTTPS

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
demo
SPA che non sono SPA, piuttosto MPA (Multiple Page Application)

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Come: sicurezza, difendersi
•

Autenticazione & Autorizzazione: partire SEMPRE dal presupposto
che i dati e le richieste che arrivano dal client al server possano essere
fraudolente, quindi predisporre meccanismi di autenticazione e
autorizzazione diversi dal cookie di autenticazione (Anti-Forgery tokens,
OAuth, ecc.)

•

Validazione: predisporre SEMPRE la validazione dei dati sia lato client
che lato server

•

Difendersi lato client: un modo per mitigare e rendere difficile la vita a
chi volesse forzare la sicurezza o appropriarsi della proprietà
intellettuale è quello della minificazione o della compilazione delle
risorse Javascript

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Come: patterns, patterns, patterns
•

Una SPA può facilmente diventare abbastanza complessa da
richiedere una certa disciplina nello sviluppo Javascript in
termini di:





Organizzazione della codebase
Separazione delle responsabilità
Coding standard: JSLint non è sindacabile
Design Patterns:






Namespace
Self executing functions
Module pattern
AMD: Asynchronous Module Definition (es. Require JS)
Anchor pattern (gestire la cronologia del browser, SEO)

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
demo
Scheletro strutturale di una solution SPA

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Come: Javascript Unit Testing
•

Esistono diversi framework di Unit Testing Javascript, i più
utilizzati sono:
 QUnit
 Jasmine
 Mocha

•

Automatizzare il processo di esecuzione delle suite di Test è
possibile tramite ambienti di automazione come Karma che
permettono anche di:
 Eseguire le suite di Test su differenti browser tramite Phantom JS
 Integrare le suite di Test in ambienti di Continuous Integration

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
demo
Javascript Unit testing

#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Q&A
Tutto il materiale di questa sessione su

http://www.communitydays.it/
Lascia il feedback su questa sessione,
potrai essere estratto per i nostri premi!
Seguici su
Twitter @CommunityDaysIT
Facebook http://facebook.com/cdaysit
#CDays14

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Mais conteúdo relacionado

Mais procurados

Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Emanuele Bartolesi
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
Luca Milan
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
Salvatore Laisa
 
Mob01 mobile services e webapi
Mob01   mobile services e webapiMob01   mobile services e webapi
Mob01 mobile services e webapi
DotNetCampus
 

Mais procurados (20)

Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
 
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
Disegnare Web Application orientate al Mobile con MVC 4 e jQuery Mobile (We W...
 
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaSviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Salvatore Laisa, WordPress + JQuery
Salvatore Laisa, WordPress + JQuerySalvatore Laisa, WordPress + JQuery
Salvatore Laisa, WordPress + JQuery
 
Test di carico con Visual Studio Online: facile!
Test di carico con Visual Studio Online: facile! Test di carico con Visual Studio Online: facile!
Test di carico con Visual Studio Online: facile!
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
AngularJS 2.0
AngularJS 2.0 AngularJS 2.0
AngularJS 2.0
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal Webtrends
 
Asp.Net MVC 5
Asp.Net MVC 5Asp.Net MVC 5
Asp.Net MVC 5
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
Corso 3 giorni Angular 2+
Corso 3 giorni Angular 2+Corso 3 giorni Angular 2+
Corso 3 giorni Angular 2+
 
Vaadin7
Vaadin7Vaadin7
Vaadin7
 
Mob01 mobile services e webapi
Mob01   mobile services e webapiMob01   mobile services e webapi
Mob01 mobile services e webapi
 
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
 
Web dynpro for abap 02
Web dynpro for abap 02Web dynpro for abap 02
Web dynpro for abap 02
 

Destaque

The mikado method xp days ukraine
The mikado method   xp days ukraineThe mikado method   xp days ukraine
The mikado method xp days ukraine
ellnestam
 
Ciklum net sat12112011-vladimir gorshunov -scrum and kanban in action
Ciklum net sat12112011-vladimir gorshunov -scrum and kanban in actionCiklum net sat12112011-vladimir gorshunov -scrum and kanban in action
Ciklum net sat12112011-vladimir gorshunov -scrum and kanban in action
Ciklum Ukraine
 

Destaque (9)

The mikado method xp days ukraine
The mikado method   xp days ukraineThe mikado method   xp days ukraine
The mikado method xp days ukraine
 
Node.js in action
Node.js in actionNode.js in action
Node.js in action
 
Single page webapplications
Single page webapplicationsSingle page webapplications
Single page webapplications
 
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalSecrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
 
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
 
node.js in action
node.js in actionnode.js in action
node.js in action
 
Scala in Action - Heiko Seeburger
Scala in Action - Heiko SeeburgerScala in Action - Heiko Seeburger
Scala in Action - Heiko Seeburger
 
Building Single-page Web Applications with AngularJS @ TechCamp Sai Gon 2014
Building Single-page Web Applications with AngularJS @ TechCamp Sai Gon 2014Building Single-page Web Applications with AngularJS @ TechCamp Sai Gon 2014
Building Single-page Web Applications with AngularJS @ TechCamp Sai Gon 2014
 
Ciklum net sat12112011-vladimir gorshunov -scrum and kanban in action
Ciklum net sat12112011-vladimir gorshunov -scrum and kanban in actionCiklum net sat12112011-vladimir gorshunov -scrum and kanban in action
Ciklum net sat12112011-vladimir gorshunov -scrum and kanban in action
 

Semelhante a Single Page web Application

... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
Stefano Fago
 
Vs03 – migliorare la qualità del codice con vs 2013
Vs03 – migliorare la qualità del codice con vs 2013Vs03 – migliorare la qualità del codice con vs 2013
Vs03 – migliorare la qualità del codice con vs 2013
Antonio Liccardi
 
Aziende Fornitori Web2.0
Aziende Fornitori Web2.0Aziende Fornitori Web2.0
Aziende Fornitori Web2.0
Gabriella
 

Semelhante a Single Page web Application (20)

Sviluppare applicazioni web (completamente) on-line con Visual Studio Online ...
Sviluppare applicazioni web (completamente) on-line con Visual Studio Online ...Sviluppare applicazioni web (completamente) on-line con Visual Studio Online ...
Sviluppare applicazioni web (completamente) on-line con Visual Studio Online ...
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e Microservizi
 
Sviluppare SPA con Vue
Sviluppare SPA con VueSviluppare SPA con Vue
Sviluppare SPA con Vue
 
Sviluppare SPA con Vue.js
Sviluppare SPA con Vue.jsSviluppare SPA con Vue.js
Sviluppare SPA con Vue.js
 
Mobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con XamarinMobile services multi-piattaforma con Xamarin
Mobile services multi-piattaforma con Xamarin
 
Real Solutions Day - Progetto e gestione del lavoro: ALM in breve con Visual ...
Real Solutions Day - Progetto e gestione del lavoro: ALM in breve con Visual ...Real Solutions Day - Progetto e gestione del lavoro: ALM in breve con Visual ...
Real Solutions Day - Progetto e gestione del lavoro: ALM in breve con Visual ...
 
Vs04 - DevOps: Continuous Deployment con Windows Azure
Vs04 - DevOps: Continuous Deployment con Windows AzureVs04 - DevOps: Continuous Deployment con Windows Azure
Vs04 - DevOps: Continuous Deployment con Windows Azure
 
Azure Machine Learning (Italian)
Azure Machine Learning (Italian)Azure Machine Learning (Italian)
Azure Machine Learning (Italian)
 
Cmdays mxm ugc
Cmdays mxm ugcCmdays mxm ugc
Cmdays mxm ugc
 
Musixmatch Cloud: Microsoft Azure Media Services and UGC Content
Musixmatch Cloud: Microsoft Azure Media Services and UGC ContentMusixmatch Cloud: Microsoft Azure Media Services and UGC Content
Musixmatch Cloud: Microsoft Azure Media Services and UGC Content
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Javascript Unit Testing
Javascript Unit TestingJavascript Unit Testing
Javascript Unit Testing
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
 
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo AzureCDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
 
Smau Bologna 2016 - Codemotion
Smau Bologna 2016 - CodemotionSmau Bologna 2016 - Codemotion
Smau Bologna 2016 - Codemotion
 
Vs03 – migliorare la qualità del codice con vs 2013
Vs03 – migliorare la qualità del codice con vs 2013Vs03 – migliorare la qualità del codice con vs 2013
Vs03 – migliorare la qualità del codice con vs 2013
 
Aziende Fornitori Web2.0
Aziende Fornitori Web2.0Aziende Fornitori Web2.0
Aziende Fornitori Web2.0
 

Mais de Roberto Messora

Self-adaptive geospatial web applications
Self-adaptive geospatial web applicationsSelf-adaptive geospatial web applications
Self-adaptive geospatial web applications
Roberto Messora
 
Web technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingWeb technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mapping
Roberto Messora
 

Mais de Roberto Messora (15)

Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla Z
 
Azure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integrationAzure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integration
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Seminario Big Data
Seminario Big DataSeminario Big Data
Seminario Big Data
 
Real world Visual Studio Code
Real world Visual Studio CodeReal world Visual Studio Code
Real world Visual Studio Code
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 
Docker as a hosting target
Docker as a hosting targetDocker as a hosting target
Docker as a hosting target
 
Da imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JSDa imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JS
 
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extensionEvent streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il web
 
Self-adaptive geospatial web applications
Self-adaptive geospatial web applicationsSelf-adaptive geospatial web applications
Self-adaptive geospatial web applications
 
Web technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingWeb technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mapping
 
Usare Knockout JS
Usare Knockout JSUsare Knockout JS
Usare Knockout JS
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 

Single Page web Application

  • 1. WEB05 - SINGLE PAGE APPLICATIONS: COME? COSA? PERCHÉ? Roberto Messora roberto@messora.com - @robymes #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 2. Grazie a Sponsor #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 3. Agenda • Cosa • Perché • Come  Considerazioni sulla Sicurezza: il mostro della palude, quando client e server non possono essere sviluppati a sentimento  Patterns, patterns, patterns: che barba, che noia  Test: se ne parla sempre alla fine #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 4. Prima di tutto: di cosa non parleremo Mettiamo le mani avanti #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 5. #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 6. #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 7. #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 8. Di cosa parleremo Siamo dev dopo tutto #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 9. #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 10. Cosa • SPA è l’acronimo di Single Page (Web) Application • Si riferisce in genere ad un’applicazione web in cui l’intera esperienza utente è erogata tramite una unica pagina, spesso ricca e complessa • Una SPA si caratterizza lato client per l’utilizzo di tecnologie di ultima generazione:  HTML5  CSS3  Javascript • Parlando di SPA non va sottovalutato il back-end lato server #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 11. Perché • La ragione principale per scegliere di sviluppare una SPA sta nella ricchezza dell’esperienza utente erogata:  L’uso di chiamate Ajax Javascript asincrone verso il back-end permette di interagire con il server senza fastidiosi refresh della pagina, lasciando percepire da parte dell’utente l’applicazione web come più responsiva, più veloce  Le nuove tecnologie visuali web lato client (CSS3, Canvas, ecc.) supportate dai browser di ultima generazione, permettono una esperienza utente praticamente identica a quella di un’applicazione desktop  Praticamente ogni sito web fra i più utilizzati è strutturato come una SPA (Facebook, Twitter, …), l’utente si aspetta una esperienza utente simile  Una SPA permette una migliore usabilità di un sito web in formato mobile perché a seguito del primo accesso permette di ridurre al minimo l’uso della linea dati perché evita di dover scaricare la UI ad ogni post-back #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 12. Come: una scelta difficile • Non SPA: esiste un modo univoco per sviluppare una  Esistono decine di framework Javascript su cui è possibile basare una SPA (fare un giro su http://todomvc.com/ per rendersene conto)  Sono molteplici anche le opzioni di tecnologia utilizzabile lato server, ad esempio varie declinazioni dello stack ASP.NET (classico + WCF, MVC) oppure Node.JS, quasi sempre implementati come endpoint di servizi REST/JSON  Esiste anche la possibilità di utilizzare basi dati non relazionali che forniscono nativamente un accesso REST alle proprie funzionalità di query e archiviazione #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 13. demo Da zero a SPA in 30 secondi netti #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 14. Come: sicurezza, il mostro della palude Cookies #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Browser Dev Tools
  • 15. demo Cookies e F12 (no, non sono i biscotti dei Top Gun) #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 16. Come: sicurezza, le regole • Regola Numero 1: Javascript e sicurezza sono due concetti estremamente distanti soprattutto quando nel browser hai a disposizione il tasto F12 • Regola Numero 2: Qualsiasi decisione di design di una SPA parte dall’aver imparato la Regola Numero 1 • Regola Numero 3: Alle luce della Regola Numero 1 e della Regola Numero 2 si evince che una SPA non è quasi mai composta da una unica pagina (quindi una SPA non è una SPA…) • Regola Numero 4: usare SEMPRE HTTPS #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 17. demo SPA che non sono SPA, piuttosto MPA (Multiple Page Application) #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 18. Come: sicurezza, difendersi • Autenticazione & Autorizzazione: partire SEMPRE dal presupposto che i dati e le richieste che arrivano dal client al server possano essere fraudolente, quindi predisporre meccanismi di autenticazione e autorizzazione diversi dal cookie di autenticazione (Anti-Forgery tokens, OAuth, ecc.) • Validazione: predisporre SEMPRE la validazione dei dati sia lato client che lato server • Difendersi lato client: un modo per mitigare e rendere difficile la vita a chi volesse forzare la sicurezza o appropriarsi della proprietà intellettuale è quello della minificazione o della compilazione delle risorse Javascript #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 19. Come: patterns, patterns, patterns • Una SPA può facilmente diventare abbastanza complessa da richiedere una certa disciplina nello sviluppo Javascript in termini di:     Organizzazione della codebase Separazione delle responsabilità Coding standard: JSLint non è sindacabile Design Patterns:      Namespace Self executing functions Module pattern AMD: Asynchronous Module Definition (es. Require JS) Anchor pattern (gestire la cronologia del browser, SEO) #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 20. demo Scheletro strutturale di una solution SPA #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 21. Come: Javascript Unit Testing • Esistono diversi framework di Unit Testing Javascript, i più utilizzati sono:  QUnit  Jasmine  Mocha • Automatizzare il processo di esecuzione delle suite di Test è possibile tramite ambienti di automazione come Karma che permettono anche di:  Eseguire le suite di Test su differenti browser tramite Phantom JS  Integrare le suite di Test in ambienti di Continuous Integration #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 22. demo Javascript Unit testing #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 23. Q&A Tutto il materiale di questa sessione su http://www.communitydays.it/ Lascia il feedback su questa sessione, potrai essere estratto per i nostri premi! Seguici su Twitter @CommunityDaysIT Facebook http://facebook.com/cdaysit #CDays14 #CDays14 – Milano 25, 26 e 27 Febbraio 2014

Notas do Editor

  1. Slide da mostrare prima di iniziare la sessione – non rimuovere!
  2. Ultima slide, obbligatoria