Single page applications

Diego Cardozo
Diego CardozoPrincipal Performance Engineer um Oracle
Single Page
Applications
Diego Cardozo
github.com/diegocard/SPA-Presentation
Agenda
1. Motivation
2. Introduction
3. Examples
4. Architecture
5. Advantages and disadvantages
6. Tools
7. Demo
Motivation (1)
One of the main aspects that influence user
experience is load time.
We use many techniquest to make it quicker:
Minimize scripts and CSS
Combine images in a single sprite
Delay JavaScript execution
Handle static files separately (CDN)
Resource cache
Motivation (2)
However, even with cache the browser must:
Re-parse and execute CSS and JavaScript code.
Download and parse the whole page HTML.
Even when only a little part changed.
Rebuild the DOM tree.
Render the UI.
The user sees the page being constructed as he waits.
Motivation (3)
To sum up, SPA is an answer to the following questions:
¿How can we achieve a more efficient behavior?
¿Can we only load what's new or necessary?
¿How can we improve user experience?
Introduction (1)
What is a SPA?
It is a new approach to building web applications.
The whole source code is either loaded initially or
afterwards dynamically, without reloading the page.
Navigation is resolved on the client side.
Server calls are done asynchronously.
UI is built on the client side.
Introduction (2)
What is NOT a SPA
Join all webpages for the site and load them statically.
Black or white, hybrid approaches do exist.
A silver bullet: it might not be a good idea for some projects.
Introduction (3)
What can a SPA do?
Show URL changes and navigate forward and backward.
Manipulate the DOM on the client side.
Wait for the view to load before showing it.
Store previously loaded pages on the client.
Examples
GMail
This presentation
Stashy
Nogginator
Architecture
Advantages and disadvantages (1)
Advantages
Faster and slicker UI.
Easier maintenance.
Better load distribution.
The beginning of the development process is faster.
UI is simply another client.
Great for testing.
Perfect approach to combine with mobile applications.
Advantages and disadvantages (2)
Disadvantages
The initial load can be slow.
SEO can become complex.
Requires JavaScript to be enabled.
Requires additional JavaScript knowledge.
Breaks analytics, ads and widgets conventions.
Advantages and disadvantages (3)
Other aspects
We move non-critic business logic to the client.
Our code used to be90% C#/VB and 10% JS.
Now it will be 50/50.
This isn't necessarily an advantage or disadvantage, but we
will need a different set of tools to maintain good practices.
Tools (1)
Client side development
Tools (2)
Knockout.js
Created by Steve Anderson
ASP.NET PM for Microsoft.
Uses MVVM, a design pattern created by John Smith
Microsoft MVP for his work in WPF.
It can be even used when we are not developing SPA.
Included with MVC's default templates.
Tools (3)
Server side development
En MVC, nuestros controladores pasan a ser ApiControllers
para definir un API RESTful.
Implementamos una sola vista (layout).
No vamos a utilizar Razor para renderizar las vistas.
Vamos a ver un template para Visual Studio que trae un
proyecto pre-configurado para SPA (Hot Towel SPA).
Demo (1)
Start from John Papa's Hot Towel SPA template
Tour through at Durandal's main components
Analyzing each component in depth takes too long.
We take a look at how the RESTful API is implemented
Exposes user data.
We add a new functionality (sessions).
Tour through client code.
Mention the most important libraries.
Demogithub.com/diegocard/SPA-Demo
Resources
learn.knockout.com
singlepageappbook.com
todomvc.com
johnpapa.net
slideshare.net/dcslides/spa-25806613
If you want to know more
Questions?
1 von 21

Recomendados

Single Page Application von
Single Page ApplicationSingle Page Application
Single Page ApplicationIsuru Madusanka
1.3K views24 Folien
Single page application von
Single page applicationSingle page application
Single page applicationArthur Fung
915 views21 Folien
Introduction To Single Page Application von
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page ApplicationKMS Technology
10.8K views34 Folien
Introduction to ReactJS von
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJSHoang Long
5.3K views45 Folien
Angular material von
Angular materialAngular material
Angular materialKalpesh Satasiya
902 views10 Folien
Patterns of enterprise application architecture von
Patterns of enterprise application architecturePatterns of enterprise application architecture
Patterns of enterprise application architectureChinh Ngo Nguyen
2.6K views193 Folien

Más contenido relacionado

Was ist angesagt?

Laravel Tutorial PPT von
Laravel Tutorial PPTLaravel Tutorial PPT
Laravel Tutorial PPTPiyush Aggarwal
20.6K views86 Folien
Vue js for beginner von
Vue js for beginner Vue js for beginner
Vue js for beginner Chandrasekar G
562 views34 Folien
Spring Framework - Core von
Spring Framework - CoreSpring Framework - Core
Spring Framework - CoreDzmitry Naskou
34.8K views117 Folien
Doing REST Right von
Doing REST RightDoing REST Right
Doing REST RightKerry Buckley
28.3K views56 Folien
Java entreprise edition et industrialisation du génie logiciel par m.youssfi von
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiENSET, Université Hassan II Casablanca
24.4K views416 Folien
How to build Micro Frontends with @angular/elements von
How to build Micro Frontends with @angular/elementsHow to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsMarcellKiss7
79 views36 Folien

Was ist angesagt?(20)

How to build Micro Frontends with @angular/elements von MarcellKiss7
How to build Micro Frontends with @angular/elementsHow to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elements
MarcellKiss779 views
An introduction to Vue.js von Pagepro
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
Pagepro440 views
The Point of Vue - Intro to Vue.js von Holly Schinsky
The Point of Vue - Intro to Vue.jsThe Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.js
Holly Schinsky1.6K views
Angular von sridhiya
AngularAngular
Angular
sridhiya154 views
Laravel introduction von Simon Funk
Laravel introductionLaravel introduction
Laravel introduction
Simon Funk1.1K views
An Introduction to Maven von Vadym Lotar
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
Vadym Lotar13.9K views
What Is Express JS? von Simplilearn
What Is Express JS?What Is Express JS?
What Is Express JS?
Simplilearn475 views
Internship presentation von Wasim Shemna
Internship presentationInternship presentation
Internship presentation
Wasim Shemna5.7K views
ASP.NET Core MVC + Web API with Overview von Shahed Chowdhuri
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
Shahed Chowdhuri4.6K views

Destacado

Single Page Applications von
Single Page ApplicationsSingle Page Applications
Single Page ApplicationsMassimo Iacolare
4.4K views40 Folien
Single Page WebApp Architecture von
Single Page WebApp ArchitectureSingle Page WebApp Architecture
Single Page WebApp ArchitectureMorgan Cheng
12.9K views61 Folien
Single Page Application (SPA) using AngularJS von
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSM R Rony
29.8K views19 Folien
Single-Page Application Design Principles 101 von
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Jollen Chen
3.8K views68 Folien
Building single page applications von
Building single page applicationsBuilding single page applications
Building single page applicationsSC5.io
7K views22 Folien
Benefits of developing single page web applications using angular js von
Benefits of developing single page web applications using angular jsBenefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular jsHarbinger Systems - HRTech Builder of Choice
47.1K views34 Folien

Destacado(17)

Single Page WebApp Architecture von Morgan Cheng
Single Page WebApp ArchitectureSingle Page WebApp Architecture
Single Page WebApp Architecture
Morgan Cheng12.9K views
Single Page Application (SPA) using AngularJS von M R Rony
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJS
M R Rony29.8K views
Single-Page Application Design Principles 101 von Jollen Chen
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101
Jollen Chen3.8K views
Building single page applications von SC5.io
Building single page applicationsBuilding single page applications
Building single page applications
SC5.io7K views
5 single page application principles developers need to know von Chris Love
5 single page application principles developers need to know5 single page application principles developers need to know
5 single page application principles developers need to know
Chris Love10.6K views
Single Page Application Best practices von Tarence DSouza
Single Page Application Best practicesSingle Page Application Best practices
Single Page Application Best practices
Tarence DSouza2K views
Refactoring to a Single Page Application von Codemotion
Refactoring to a Single Page ApplicationRefactoring to a Single Page Application
Refactoring to a Single Page Application
Codemotion815 views
Islamic Fashion Festival von Vili 48
Islamic Fashion FestivalIslamic Fashion Festival
Islamic Fashion Festival
Vili 48 5.8K views
Angular 2 - Core Concepts von Fabio Biondi
Angular 2 - Core ConceptsAngular 2 - Core Concepts
Angular 2 - Core Concepts
Fabio Biondi10.3K views
Introduction to Angular 2 von Knoldus Inc.
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2
Knoldus Inc.22.4K views
Getting Started with Angular 2 von FITC
Getting Started with Angular 2Getting Started with Angular 2
Getting Started with Angular 2
FITC12.7K views

Similar a Single page applications

CloudStack UI von
CloudStack UICloudStack UI
CloudStack UIShapeBlue
1.4K views58 Folien
Bitworks CloudStack UI - CSEUUG 08 August 2017 von
Bitworks CloudStack UI - CSEUUG 08 August 2017Bitworks CloudStack UI - CSEUUG 08 August 2017
Bitworks CloudStack UI - CSEUUG 08 August 2017Ivan Kudryavtsev
131 views58 Folien
AngularJS in Production (CTO Forum) von
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)Alex Ross
849 views61 Folien
Struts & hibernate ppt von
Struts & hibernate pptStruts & hibernate ppt
Struts & hibernate pptPankaj Patel
2K views19 Folien
TRWResume-10-2016 von
TRWResume-10-2016TRWResume-10-2016
TRWResume-10-2016Tommy Williams
200 views6 Folien
Browser core red bus presentation von
Browser core red bus presentation Browser core red bus presentation
Browser core red bus presentation redBusTech
132 views51 Folien

Similar a Single page applications(20)

CloudStack UI von ShapeBlue
CloudStack UICloudStack UI
CloudStack UI
ShapeBlue1.4K views
Bitworks CloudStack UI - CSEUUG 08 August 2017 von Ivan Kudryavtsev
Bitworks CloudStack UI - CSEUUG 08 August 2017Bitworks CloudStack UI - CSEUUG 08 August 2017
Bitworks CloudStack UI - CSEUUG 08 August 2017
Ivan Kudryavtsev131 views
AngularJS in Production (CTO Forum) von Alex Ross
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)
Alex Ross849 views
Browser core red bus presentation von redBusTech
Browser core red bus presentation Browser core red bus presentation
Browser core red bus presentation
redBusTech132 views
KiranGara_JEE_7Yrs von Kiran Gara
KiranGara_JEE_7YrsKiranGara_JEE_7Yrs
KiranGara_JEE_7Yrs
Kiran Gara163 views
Performance comparison on java technologies a practical approach von csandit
Performance comparison on java technologies   a practical approachPerformance comparison on java technologies   a practical approach
Performance comparison on java technologies a practical approach
csandit224 views
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACH von cscpconf
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACHPERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACH
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACH
cscpconf150 views
COMP6210 Web Services And Design Methodologies.docx von write31
COMP6210 Web Services And Design Methodologies.docxCOMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docx
write312 views
DeveloperWeek 2020: Cloud-Native and Microservices Accelerate Process Improve... von Shahir Daya
DeveloperWeek 2020: Cloud-Native and Microservices Accelerate Process Improve...DeveloperWeek 2020: Cloud-Native and Microservices Accelerate Process Improve...
DeveloperWeek 2020: Cloud-Native and Microservices Accelerate Process Improve...
Shahir Daya80 views
Web based, mobile enterprise applications von Manish Garg
Web based, mobile enterprise applicationsWeb based, mobile enterprise applications
Web based, mobile enterprise applications
Manish Garg734 views
Front End Development | Introduction von JohnTaieb
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
JohnTaieb10.5K views
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f... von JSFestUA
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JSFestUA238 views
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISON von ijseajournal
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISONSTATISTICAL ANALYSIS FOR PERFORMANCE COMPARISON
STATISTICAL ANALYSIS FOR PERFORMANCE COMPARISON
ijseajournal561 views
AmaleswaraRao_DOTNET von Amal J
AmaleswaraRao_DOTNETAmaleswaraRao_DOTNET
AmaleswaraRao_DOTNET
Amal J104 views
Chandra Sekhar Cheekuru NET UI von Chandra Sekhar
Chandra Sekhar Cheekuru  NET UIChandra Sekhar Cheekuru  NET UI
Chandra Sekhar Cheekuru NET UI
Chandra Sekhar949 views

Más de Diego Cardozo

El proximo billon de usuarios von
El proximo billon de usuariosEl proximo billon de usuarios
El proximo billon de usuariosDiego Cardozo
143 views19 Folien
The next billion users von
The next billion usersThe next billion users
The next billion usersDiego Cardozo
237 views19 Folien
Troubleshooting Ecommerce Performance von
 Troubleshooting Ecommerce Performance Troubleshooting Ecommerce Performance
Troubleshooting Ecommerce PerformanceDiego Cardozo
174 views72 Folien
Cranking It Up - SuiteWorld 2017 von
Cranking It Up  - SuiteWorld 2017Cranking It Up  - SuiteWorld 2017
Cranking It Up - SuiteWorld 2017Diego Cardozo
149 views72 Folien
Speed Thrills - Suiteworld 2016 von
Speed Thrills - Suiteworld 2016Speed Thrills - Suiteworld 2016
Speed Thrills - Suiteworld 2016Diego Cardozo
117 views43 Folien
Performance in the cloud von
Performance in the cloudPerformance in the cloud
Performance in the cloudDiego Cardozo
302 views12 Folien

Más de Diego Cardozo(16)

El proximo billon de usuarios von Diego Cardozo
El proximo billon de usuariosEl proximo billon de usuarios
El proximo billon de usuarios
Diego Cardozo143 views
Troubleshooting Ecommerce Performance von Diego Cardozo
 Troubleshooting Ecommerce Performance Troubleshooting Ecommerce Performance
Troubleshooting Ecommerce Performance
Diego Cardozo174 views
Cranking It Up - SuiteWorld 2017 von Diego Cardozo
Cranking It Up  - SuiteWorld 2017Cranking It Up  - SuiteWorld 2017
Cranking It Up - SuiteWorld 2017
Diego Cardozo149 views
Speed Thrills - Suiteworld 2016 von Diego Cardozo
Speed Thrills - Suiteworld 2016Speed Thrills - Suiteworld 2016
Speed Thrills - Suiteworld 2016
Diego Cardozo117 views
Cómo testear performance sin morir en el intento von Diego Cardozo
Cómo testear performance sin morir en el intentoCómo testear performance sin morir en el intento
Cómo testear performance sin morir en el intento
Diego Cardozo409 views
Optimize performance and not die trying von Diego Cardozo
Optimize performance and not die tryingOptimize performance and not die trying
Optimize performance and not die trying
Diego Cardozo1.2K views
Optimizar performance sin morir en el intento von Diego Cardozo
Optimizar performance sin morir en el intentoOptimizar performance sin morir en el intento
Optimizar performance sin morir en el intento
Diego Cardozo386 views
How to test performance and not die trying von Diego Cardozo
How to test performance and not die tryingHow to test performance and not die trying
How to test performance and not die trying
Diego Cardozo721 views
Testeando performance sin morir en el intento von Diego Cardozo
Testeando performance sin morir en el intentoTesteando performance sin morir en el intento
Testeando performance sin morir en el intento
Diego Cardozo458 views
Organización de aplicaciones web con Backbone.js von Diego Cardozo
Organización de aplicaciones web con Backbone.jsOrganización de aplicaciones web con Backbone.js
Organización de aplicaciones web con Backbone.js
Diego Cardozo1.5K views
Structuring web applications with Backbone.js von Diego Cardozo
Structuring web applications with Backbone.jsStructuring web applications with Backbone.js
Structuring web applications with Backbone.js
Diego Cardozo1.2K views
Component Based Software Development von Diego Cardozo
Component Based Software DevelopmentComponent Based Software Development
Component Based Software Development
Diego Cardozo2.9K views
Desarrollo de Software Basado en Componentes von Diego Cardozo
Desarrollo de Software Basado en ComponentesDesarrollo de Software Basado en Componentes
Desarrollo de Software Basado en Componentes
Diego Cardozo1.9K views
Single Page Applications von Diego Cardozo
Single Page ApplicationsSingle Page Applications
Single Page Applications
Diego Cardozo2.4K views

Último

SAP FOR CONTRACT MANUFACTURING.pdf von
SAP FOR CONTRACT MANUFACTURING.pdfSAP FOR CONTRACT MANUFACTURING.pdf
SAP FOR CONTRACT MANUFACTURING.pdfVirendra Rai, PMP
13 views2 Folien
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports von
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsRa'Fat Al-Msie'deen
8 views49 Folien
Dapr Unleashed: Accelerating Microservice Development von
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice DevelopmentMiroslav Janeski
10 views29 Folien
ShortStory_qlora.pptx von
ShortStory_qlora.pptxShortStory_qlora.pptx
ShortStory_qlora.pptxpranathikrishna22
5 views10 Folien
Quality Engineer: A Day in the Life von
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the LifeJohn Valentino
6 views18 Folien
Top-5-production-devconMunich-2023.pptx von
Top-5-production-devconMunich-2023.pptxTop-5-production-devconMunich-2023.pptx
Top-5-production-devconMunich-2023.pptxTier1 app
7 views40 Folien

Último(20)

BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports von Ra'Fat Al-Msie'deen
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
Dapr Unleashed: Accelerating Microservice Development von Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski10 views
Top-5-production-devconMunich-2023.pptx von Tier1 app
Top-5-production-devconMunich-2023.pptxTop-5-production-devconMunich-2023.pptx
Top-5-production-devconMunich-2023.pptx
Tier1 app7 views
Copilot Prompting Toolkit_All Resources.pdf von Riccardo Zamana
Copilot Prompting Toolkit_All Resources.pdfCopilot Prompting Toolkit_All Resources.pdf
Copilot Prompting Toolkit_All Resources.pdf
Riccardo Zamana10 views
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... von TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin96 views
360 graden fabriek von info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info33492122 views
Generic or specific? Making sensible software design decisions von Bert Jan Schrijver
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
Navigating container technology for enhanced security by Niklas Saari von Metosin Oy
Navigating container technology for enhanced security by Niklas SaariNavigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas Saari
Metosin Oy14 views
Ports-and-Adapters Architecture for Embedded HMI von Burkhard Stubert
Ports-and-Adapters Architecture for Embedded HMIPorts-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMI
Burkhard Stubert21 views
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra... von Marc Müller
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
Marc Müller40 views

Single page applications

  • 2. Agenda 1. Motivation 2. Introduction 3. Examples 4. Architecture 5. Advantages and disadvantages 6. Tools 7. Demo
  • 3. Motivation (1) One of the main aspects that influence user experience is load time. We use many techniquest to make it quicker: Minimize scripts and CSS Combine images in a single sprite Delay JavaScript execution Handle static files separately (CDN) Resource cache
  • 4. Motivation (2) However, even with cache the browser must: Re-parse and execute CSS and JavaScript code. Download and parse the whole page HTML. Even when only a little part changed. Rebuild the DOM tree. Render the UI. The user sees the page being constructed as he waits.
  • 5. Motivation (3) To sum up, SPA is an answer to the following questions: ¿How can we achieve a more efficient behavior? ¿Can we only load what's new or necessary? ¿How can we improve user experience?
  • 6. Introduction (1) What is a SPA? It is a new approach to building web applications. The whole source code is either loaded initially or afterwards dynamically, without reloading the page. Navigation is resolved on the client side. Server calls are done asynchronously. UI is built on the client side.
  • 7. Introduction (2) What is NOT a SPA Join all webpages for the site and load them statically. Black or white, hybrid approaches do exist. A silver bullet: it might not be a good idea for some projects.
  • 8. Introduction (3) What can a SPA do? Show URL changes and navigate forward and backward. Manipulate the DOM on the client side. Wait for the view to load before showing it. Store previously loaded pages on the client.
  • 11. Advantages and disadvantages (1) Advantages Faster and slicker UI. Easier maintenance. Better load distribution. The beginning of the development process is faster. UI is simply another client. Great for testing. Perfect approach to combine with mobile applications.
  • 12. Advantages and disadvantages (2) Disadvantages The initial load can be slow. SEO can become complex. Requires JavaScript to be enabled. Requires additional JavaScript knowledge. Breaks analytics, ads and widgets conventions.
  • 13. Advantages and disadvantages (3) Other aspects We move non-critic business logic to the client. Our code used to be90% C#/VB and 10% JS. Now it will be 50/50. This isn't necessarily an advantage or disadvantage, but we will need a different set of tools to maintain good practices.
  • 14. Tools (1) Client side development
  • 15. Tools (2) Knockout.js Created by Steve Anderson ASP.NET PM for Microsoft. Uses MVVM, a design pattern created by John Smith Microsoft MVP for his work in WPF. It can be even used when we are not developing SPA. Included with MVC's default templates.
  • 16. Tools (3) Server side development En MVC, nuestros controladores pasan a ser ApiControllers para definir un API RESTful. Implementamos una sola vista (layout). No vamos a utilizar Razor para renderizar las vistas. Vamos a ver un template para Visual Studio que trae un proyecto pre-configurado para SPA (Hot Towel SPA).
  • 17. Demo (1) Start from John Papa's Hot Towel SPA template Tour through at Durandal's main components Analyzing each component in depth takes too long. We take a look at how the RESTful API is implemented Exposes user data. We add a new functionality (sessions). Tour through client code. Mention the most important libraries.
  • 20. If you want to know more