SlideShare une entreprise Scribd logo
1  sur  50
Building single page, modular
       HTML5 applications for PC
                and Mobile
                                      Lorant Domokos
                            Microsoft Student Partners
                                               Fortech


@   itcampro   # itcamp12    Premium conference on Microsoft technologies
Mobile &
ITCamp 2012 sponsors                                                       Development




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Agenda                                                                     Development


•   What are Single Page Applications?
•   Architecture
•   Technologies
•   Knockout fundamentals
•   Navigation fundamentals
•   Services layer
•   Patterns for modular JavaScript code



@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Spectrum of Web Apps                                                       Development


• Static: consist of static HTML pages, CSS, and
  images, full page refresh, page does not
  change

• Server Rendered: server dynamically
  assembles page, JavaScript for validation,
  hover, full page refresh




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Spectrum of Web Apps                                                       Development


• Hybrid Design: similar to server-rendered, but
  relies heavily on client side Java-Script to deliver
  an engaging experience.

     – Islands of richness: islands of interactivity within the
       site that do not require full-page reloads to change
       the UI

• Single-page Interface: In this model, a full-page
  load happens only once. Ex: Hotmail, Office Live.

• Bani Pierduti is hybrid

@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Modern Web Applications                                                    Development


•   They are standards-focused, no plugins
•   They are interactive
•   They limit full-page reloads
•   They are asynchronous
•   They manage data
•   Runs on any device
•   Can work offline



@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Keep user is context                                                       Development


• No page reload
• Users are kept in context
• Fluid experience as they navigate from one
  task to another
• Result: great user experience




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Single Page Applications                                                   Development




  Rich responsive applications combining the
best of the web and desktop, build with HTML5
                and JavaScript




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Architecture                                                                   Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Architecture                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS


                                                              JavaScript Client
                                                              Side Interaction




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Architecture                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS


       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction


                                                              JavaScript Client
                                                              Side Interaction




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Architecture                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS


       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction           Nav


                                                              JavaScript Client
                                                              Side Interaction




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Architecture                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS


       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction           Nav


                                                              JavaScript Client
                                                              Side Interaction




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Architecture                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS


       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction           Nav


                                                              JavaScript Client
                                                              Side Interaction



                                                                Local Storage




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
                                                                           Development




                      DEMO MVC 4 SPA




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Bani Pierduti                                                              Development




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Technologies                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS


       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction           Nav
                      WebAPI
                      Node.js
                                                              JavaScript Client
                                                              Side Interaction



                                                                Local Storage




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Technologies                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS


       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction           Nav
                      WebAPI
                      Node.js
                                                              JavaScript Client
                                                              Side Interaction



                                                                Local Storage         HTML5




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Technologies                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS


       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction           Nav
                      WebAPI
                      Node.js
                                                              JavaScript Client
                                                              Side Interaction
                                                                                      Upshot.js?
                                                                                      Amplify.js

                                                                Local Storage         HTML5




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Technologies                                                                      Development

          Server                                                    Client

         ASP.NET                                              Rendered Page
       HTML/CSS/JS                                              HTML/CSS
                                                                                       Nav.js?
                                                                                       History.js
       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction            Nav
                      WebAPI
                      Node.js
                                                              JavaScript Client
                                                              Side Interaction
                                                                                      Upshot.js?
                                                                                      Amplify.js

                                                                Local Storage         HTML5




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Technologies                                                                      Development

          Server                                                    Client          Knockout.js
                                                                                    Backbone.js
         ASP.NET                                              Rendered Page         JsRender
       HTML/CSS/JS                                              HTML/CSS
                                                                                       Nav.js?
                                                                                       History.js
       Data Service                                           JavaScript Client
        JSON/XML                                              Side Interaction            Nav
                      WebAPI
                      Node.js
                                                              JavaScript Client
                                                              Side Interaction
                                                                                      Upshot.js?
                                                                                      Amplify.js

                                                                Local Storage         HTML5




@   itcampro       # itcamp12   Premium conference on Microsoft technologies
Mobile &
Knockout                                                                   Development


• JavaScript MVVM Framework
• MVVM-Model-View-ViewModel
     – Model-business domain objects
     – View-visible UI
     – ViewModel-data/operations on UI




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Knockout                                                                   Development


• Declarative data bindings, two way
• Automatic UI refresh
• Dependency tracking, if one object changes
  all dependent objects change
• Templating




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Observables                                                                Development


•   They are functions
•   Bindings observe observables
•   Declare: var p = ko.observable();
•   Read: var r = p();
•   Write: p(„value‟);




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Observables                                                                Development


• Types:
     – Observable: ko.observable(„value‟)
     – Observable array: ko.observableArray([])
     – Computed:
     ko.computed(function() {
         return vm.firstName() + „ ‟ + vm.lastName();
     }, vm)




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Bindings                                                                   Development


• Built in:
     – Text and Appearance
     – Forms
     – Control Flow
     – Templates
• Custom bindings




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Text and Appearance                                                        Development


•   Visible-toggle visibility
•   Text-text value of DOM element
•   Html-raw HTML of DOM element
•   Css-css classes
•   Style-raw style attributes
•   Attr-any attribute of DOM element




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Forms                                                                      Development


•   Click-click event handling
•   Event-handling any event of DOM element
•   Submit-invoked when form is submitted
•   Enable-set as enabled
•   Disable-set as disabled
•   Value-value of DOM element
•   Checked-checkbox, radio button
•   Etc.


@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Control Flow                                                               Development


• If-executed if condition is true
• Ifnot-executes if condition is false
• Foreach-executes for each item in collection
     – $index
     – $data
• With-Executes for the specified child object




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Templates                                                                  Development


• JavaScript templates-traditional JavaScript
  template in <script> tag
• Containerless control flow: template-less,
  comment based syntax




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Navigation and Browser History                                             Development


• Traditional: browser manages history, back
  and forward buttons
• URLs can contain a fragment identifier (hash)
     – This is the part after the # sign
• Fragment identifier may also contain name
  value pairs




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Navigation and Browser History                                             Development


• If only the fragment identifier changes the
  browser doesn‟t do a page refresh
• They are also not added to history
  automatically
• Fragment identifies can be used to manage
  screen layout
• Application can handle HTML 5 hashchange
  event



@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Upshot.js                                                                  Development


•   “Proxy” on client side
•   Retrieves data from service
•   Paging
•   Tracks changes
•   Offline
•   Is it ready?




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Amplify.js                                                                 Development


• Set of components designed to solve
  common web application problems with a
  simplistic API
• Request management: provides a clean and
  elegant request abstraction
• Client Side Browser & Mobile Device Storage:
  HTML5 LocalStorage on modern browsers
• Client Side Component Communication:
  pub/sub component to component
  communication

@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
WebAPI                                                                     Development




       Alessandro Pilotti already demonstrated




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Modularity                                                                 Development


• Patterns are recommended for separation of
  concerns, encapsulation, abstraction, etc
• Namespaces: var bp = bp || {};
• Structuring patterns
• Promise and Deferred patterns for handling
  asynchrony
• Advanced(Not discussed here):
     – Publish/Subscribe for module communication
     – Asynchronous module definitions
     – jQuery Widgets, Plugins

@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
JavaScript structuring patterns                                            Development


•   Prototype pattern
•   Module pattern
•   Revealing module pattern
•   Revealing prototype pattern




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Prototype pattern                                                          Development


var Calculator = function(element) {
     this.eqControl = $(element);
}

Calculator.prototype = {
     add: function(x, y) {
           var val = x + y;
           this.eqControl.text(val);
     }
}

@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Prototype pattern                                                          Development


• Pros:
     – JS built in features
     – Modularize code into reusable objects
     – Variables/functions taken out of global
       namespace
     – Functions loaded into memory once
     – Can “override” functions
• Cons:
     – “this” can be tricky
     – Contstructor separate from prototype definition

@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Module pattern                                                             Development


var Calculator = function(element) {
      // Private member.
      this.eqControl = $(element);

         return {
               // Public interface.
               add: function(x, y) {
                     var val = x + y;
                     this.eqControl.text(val);
               }
         };
}

@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Module pattern                                                             Development


• Pros:
     – Modularize code into reusable objects
     – Variables/functions taken out of global
       namespace
     – Expose only public members, hide private
• Cons:
     – Functions will be duplicated for each instance
     – Not easy to extend




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Revealing Module pattern                                                          Development

var Calculator = function(element) {
        // Private members.
        var
                eqControl = $(element),
                add: function(x, y) {
                       var val = x + y;
                       this.eqControl.text(val);
                };

         return {
                    // Public interface.
                    doAdd: add
         };
}



@   itcampro   # itcamp12          Premium conference on Microsoft technologies
Mobile &
Revealing Module pattern                                                   Development


• Pros:
     – Modularize code into reusable objects
     – Variables/functions taken out of global
       namespace
     – Expose only public members, hide private
     – Cleaner way to expose public members
• Cons:
     – Functions will be duplicated for each instance
     – Not easy to extend


@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Revealing Prototype pattern                                                     Development

var Calculator = function(element) {
        this.eqControl = $(element);
}

Calculator.prototype = function() {
       var add = function(x, y) {
               var val = x + y;
               this.eqControl.text(val);
       };

         return {
                    doAdd: add
         };
}



@   itcampro   # itcamp12        Premium conference on Microsoft technologies
Mobile &
Revealing Module pattern                                                   Development


• Pros:
     – Combines Prototype and Revealing Module
       patterns
     – Modularize code into reusable objects
     – Variables/functions taken out of global
       namespace
     – Functions loaded into memory once
     – Can “override” functions
• Cons:
     – “this” can be tricky
     – Contstructor separate from prototype definition

@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Promise pattern                                                            Development


• JavaScript requests/operations are
  asynchronous:
     – Ajax
     – Animations
     – Etc.
• How do we link operations if we have
  dependencies?




@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Mobile &
Promise pattern                                                            Development


•   jQuery.Deferred public API
•   defferred.done()
•   defferred.fail()
•   defferred.then()
•   defferred.resolve()
•   defferred.reject()
•   jQuery.when()



@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Q&A


@   itcampro   # itcamp12   Premium conference on Microsoft technologies
Building single page, modular html5 applications for PC and Mobile
Building single page, modular html5 applications for PC and Mobile

Contenu connexe

Tendances

4Ward Company Presentation
4Ward Company Presentation4Ward Company Presentation
4Ward Company Presentation4Ward
 
Model Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Futureelliando dias
 
The Flash to HTML5 Opportunity
The Flash to HTML5 OpportunityThe Flash to HTML5 Opportunity
The Flash to HTML5 OpportunityThomas Burleson
 
Sybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpSybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpPrabhakar Manthena
 
It presentation specialised application software
It presentation specialised application softwareIt presentation specialised application software
It presentation specialised application softwareNisarga Nikam
 
Iron speed appgeneration
Iron speed appgenerationIron speed appgeneration
Iron speed appgenerationankit.das
 
Building cross platform mobile web apps
Building cross platform mobile web appsBuilding cross platform mobile web apps
Building cross platform mobile web appsJames Pearce
 
Get Connected – Using Open Source Technologies on Facebook
Get Connected – Using Open Source Technologies on FacebookGet Connected – Using Open Source Technologies on Facebook
Get Connected – Using Open Source Technologies on FacebookBinesh Gummadi
 
Soa204 Kawasaki Final
Soa204 Kawasaki FinalSoa204 Kawasaki Final
Soa204 Kawasaki FinalAnush Kumar
 
Eriq VanBibber - Resume
Eriq VanBibber - ResumeEriq VanBibber - Resume
Eriq VanBibber - ResumeEriq VanBibber
 
Enterprise Modernization for Power Systems
Enterprise Modernization for Power SystemsEnterprise Modernization for Power Systems
Enterprise Modernization for Power SystemsRoyal Cyber Inc.
 
Building a Rich Social Network Application
Building a Rich Social Network ApplicationBuilding a Rich Social Network Application
Building a Rich Social Network Applicationgoodfriday
 
Inaugural address manjusha - Indicthreads cloud computing conference 2011
Inaugural address manjusha -  Indicthreads cloud computing conference 2011Inaugural address manjusha -  Indicthreads cloud computing conference 2011
Inaugural address manjusha - Indicthreads cloud computing conference 2011IndicThreads
 

Tendances (20)

UI_Engineer
UI_EngineerUI_Engineer
UI_Engineer
 
4Ward Company Presentation
4Ward Company Presentation4Ward Company Presentation
4Ward Company Presentation
 
Cloud & The Mobile Stack
Cloud & The Mobile StackCloud & The Mobile Stack
Cloud & The Mobile Stack
 
Model Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Future
 
The Flash to HTML5 Opportunity
The Flash to HTML5 OpportunityThe Flash to HTML5 Opportunity
The Flash to HTML5 Opportunity
 
Worklight Overview
Worklight OverviewWorklight Overview
Worklight Overview
 
Sybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpSybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wp
 
It presentation specialised application software
It presentation specialised application softwareIt presentation specialised application software
It presentation specialised application software
 
Iron speed appgeneration
Iron speed appgenerationIron speed appgeneration
Iron speed appgeneration
 
Building cross platform mobile web apps
Building cross platform mobile web appsBuilding cross platform mobile web apps
Building cross platform mobile web apps
 
Ashish tripath
Ashish tripathAshish tripath
Ashish tripath
 
Get Connected – Using Open Source Technologies on Facebook
Get Connected – Using Open Source Technologies on FacebookGet Connected – Using Open Source Technologies on Facebook
Get Connected – Using Open Source Technologies on Facebook
 
GlenUnderwoodResume
GlenUnderwoodResumeGlenUnderwoodResume
GlenUnderwoodResume
 
Soa204 Kawasaki Final
Soa204 Kawasaki FinalSoa204 Kawasaki Final
Soa204 Kawasaki Final
 
Eriq VanBibber - Resume
Eriq VanBibber - ResumeEriq VanBibber - Resume
Eriq VanBibber - Resume
 
Enterprise Modernization for Power Systems
Enterprise Modernization for Power SystemsEnterprise Modernization for Power Systems
Enterprise Modernization for Power Systems
 
Building a Rich Social Network Application
Building a Rich Social Network ApplicationBuilding a Rich Social Network Application
Building a Rich Social Network Application
 
Deepak CV
Deepak CVDeepak CV
Deepak CV
 
Inaugural address manjusha - Indicthreads cloud computing conference 2011
Inaugural address manjusha -  Indicthreads cloud computing conference 2011Inaugural address manjusha -  Indicthreads cloud computing conference 2011
Inaugural address manjusha - Indicthreads cloud computing conference 2011
 
IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013
 

En vedette

.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScriptManfred Steyer
 
Mihai Tataran - Building web applications with HTML 5 and related technologies
Mihai Tataran - Building web applications with HTML 5 and related technologiesMihai Tataran - Building web applications with HTML 5 and related technologies
Mihai Tataran - Building web applications with HTML 5 and related technologiesITSpark Community
 
Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Manfred Steyer
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architektenadesso AG
 
Building SPAs with AngularJS
Building SPAs with AngularJSBuilding SPAs with AngularJS
Building SPAs with AngularJSCezar Carneiro
 
Modern angular 05_fazit
Modern angular 05_fazitModern angular 05_fazit
Modern angular 05_fazitManfred Steyer
 
Zukunftssichere Anwendungen mit AngularJS 1.x entwickeln (GDG DevFest Karlsru...
Zukunftssichere Anwendungen mit AngularJS 1.x entwickeln (GDG DevFest Karlsru...Zukunftssichere Anwendungen mit AngularJS 1.x entwickeln (GDG DevFest Karlsru...
Zukunftssichere Anwendungen mit AngularJS 1.x entwickeln (GDG DevFest Karlsru...Christian Janz
 
Web Development Trends 2016
Web Development Trends 2016Web Development Trends 2016
Web Development Trends 2016Miva
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsDirk Steinkopf
 
Introduction to Angular2
Introduction to Angular2Introduction to Angular2
Introduction to Angular2Ivan Matiishyn
 
Case Study: Produktkonfigurator Web-App
Case Study: Produktkonfigurator Web-AppCase Study: Produktkonfigurator Web-App
Case Study: Produktkonfigurator Web-AppFLYACTS GmbH
 
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileModern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileDan Mohl
 
Asp.net architecture
Asp.net architectureAsp.net architecture
Asp.net architectureIblesoft
 
Angular 2 - Core Concepts
Angular 2 - Core ConceptsAngular 2 - Core Concepts
Angular 2 - Core ConceptsFabio Biondi
 
Angular2 workshop
Angular2 workshopAngular2 workshop
Angular2 workshopNir Kaufman
 
Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Evan Lin
 
Single Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSM R Rony
 

En vedette (20)

.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
 
Mihai Tataran - Building web applications with HTML 5 and related technologies
Mihai Tataran - Building web applications with HTML 5 and related technologiesMihai Tataran - Building web applications with HTML 5 and related technologies
Mihai Tataran - Building web applications with HTML 5 and related technologies
 
Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2Moderne Web-Anwendungen mit Angular 2
Moderne Web-Anwendungen mit Angular 2
 
Empfehlungen im Web
Empfehlungen im WebEmpfehlungen im Web
Empfehlungen im Web
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
Building SPAs with AngularJS
Building SPAs with AngularJSBuilding SPAs with AngularJS
Building SPAs with AngularJS
 
Modern angular 05_fazit
Modern angular 05_fazitModern angular 05_fazit
Modern angular 05_fazit
 
Building rich Single Page Applications (SPAs) for desktop, mobile, and tablet...
Building rich Single Page Applications (SPAs) for desktop, mobile, and tablet...Building rich Single Page Applications (SPAs) for desktop, mobile, and tablet...
Building rich Single Page Applications (SPAs) for desktop, mobile, and tablet...
 
Zukunftssichere Anwendungen mit AngularJS 1.x entwickeln (GDG DevFest Karlsru...
Zukunftssichere Anwendungen mit AngularJS 1.x entwickeln (GDG DevFest Karlsru...Zukunftssichere Anwendungen mit AngularJS 1.x entwickeln (GDG DevFest Karlsru...
Zukunftssichere Anwendungen mit AngularJS 1.x entwickeln (GDG DevFest Karlsru...
 
Web Development Trends 2016
Web Development Trends 2016Web Development Trends 2016
Web Development Trends 2016
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-Tools
 
Introduction to Angular2
Introduction to Angular2Introduction to Angular2
Introduction to Angular2
 
Case Study: Produktkonfigurator Web-App
Case Study: Produktkonfigurator Web-AppCase Study: Produktkonfigurator Web-App
Case Study: Produktkonfigurator Web-App
 
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileModern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
 
Asp.net architecture
Asp.net architectureAsp.net architecture
Asp.net architecture
 
Angular 2 - Core Concepts
Angular 2 - Core ConceptsAngular 2 - Core Concepts
Angular 2 - Core Concepts
 
Angular2 workshop
Angular2 workshopAngular2 workshop
Angular2 workshop
 
Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot
 
Single Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJS
 
Xamarin
XamarinXamarin
Xamarin
 

Similaire à Building single page, modular html5 applications for PC and Mobile

ITCamp 2012 - Adam Granicz - Web development with WebSharper in F#
ITCamp 2012 - Adam Granicz - Web development with WebSharper in F#ITCamp 2012 - Adam Granicz - Web development with WebSharper in F#
ITCamp 2012 - Adam Granicz - Web development with WebSharper in F#ITCamp
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsJames Pearce
 
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalAlessandro Pilotti
 
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp
 
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSMihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSITCamp
 
MHa Resume Aug 27 2012
MHa Resume Aug 27 2012MHa Resume Aug 27 2012
MHa Resume Aug 27 2012mhaapane
 
Agile in Action - Act 3: Testing
Agile in Action - Act 3: TestingAgile in Action - Act 3: Testing
Agile in Action - Act 3: TestingSpiffy
 
Top 12 Front End Technologies to Use In 2023.pdf
Top 12 Front End Technologies to Use In 2023.pdfTop 12 Front End Technologies to Use In 2023.pdf
Top 12 Front End Technologies to Use In 2023.pdfLaura Miller
 
Scalable And Usable Web Applications
Scalable And Usable Web ApplicationsScalable And Usable Web Applications
Scalable And Usable Web ApplicationsClint Edmonson
 
Nitin_Krishna_Resume
Nitin_Krishna_ResumeNitin_Krishna_Resume
Nitin_Krishna_ResumeNitin Krishna
 
What are the advantages of choosing React Js for the creation of a website.pdf
What are the advantages of choosing React Js for the creation of a website.pdfWhat are the advantages of choosing React Js for the creation of a website.pdf
What are the advantages of choosing React Js for the creation of a website.pdfCuion Technologies
 
Chandra Sekhar Cheekuru NET UI
Chandra Sekhar Cheekuru  NET UIChandra Sekhar Cheekuru  NET UI
Chandra Sekhar Cheekuru NET UIChandra Sekhar
 
Top 12 Front End Technologies to Use In 2024.pdf
Top 12 Front End Technologies to Use In 2024.pdfTop 12 Front End Technologies to Use In 2024.pdf
Top 12 Front End Technologies to Use In 2024.pdfLaura Miller
 
ItCamp2012-Real-Time-Web-Web-Sockets-Windows 8- Florin-Cardasim
ItCamp2012-Real-Time-Web-Web-Sockets-Windows 8- Florin-CardasimItCamp2012-Real-Time-Web-Web-Sockets-Windows 8- Florin-Cardasim
ItCamp2012-Real-Time-Web-Web-Sockets-Windows 8- Florin-CardasimFlorin Cardasim
 
ArcReady - Scalable And Usable Web Applications
ArcReady - Scalable And Usable Web ApplicationsArcReady - Scalable And Usable Web Applications
ArcReady - Scalable And Usable Web ApplicationsMicrosoft ArcReady
 

Similaire à Building single page, modular html5 applications for PC and Mobile (20)

ITCamp 2012 - Adam Granicz - Web development with WebSharper in F#
ITCamp 2012 - Adam Granicz - Web development with WebSharper in F#ITCamp 2012 - Adam Granicz - Web development with WebSharper in F#
ITCamp 2012 - Adam Granicz - Web development with WebSharper in F#
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
 
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
 
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
 
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSMihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
 
MHa Resume Aug 27 2012
MHa Resume Aug 27 2012MHa Resume Aug 27 2012
MHa Resume Aug 27 2012
 
Agile in Action - Act 3: Testing
Agile in Action - Act 3: TestingAgile in Action - Act 3: Testing
Agile in Action - Act 3: Testing
 
Top 12 Front End Technologies to Use In 2023.pdf
Top 12 Front End Technologies to Use In 2023.pdfTop 12 Front End Technologies to Use In 2023.pdf
Top 12 Front End Technologies to Use In 2023.pdf
 
Resume
ResumeResume
Resume
 
Scalable And Usable Web Applications
Scalable And Usable Web ApplicationsScalable And Usable Web Applications
Scalable And Usable Web Applications
 
Nitin_Krishna_Resume
Nitin_Krishna_ResumeNitin_Krishna_Resume
Nitin_Krishna_Resume
 
Anand Kumar.K
Anand Kumar.KAnand Kumar.K
Anand Kumar.K
 
What are the advantages of choosing React Js for the creation of a website.pdf
What are the advantages of choosing React Js for the creation of a website.pdfWhat are the advantages of choosing React Js for the creation of a website.pdf
What are the advantages of choosing React Js for the creation of a website.pdf
 
Chandra Sekhar Cheekuru NET UI
Chandra Sekhar Cheekuru  NET UIChandra Sekhar Cheekuru  NET UI
Chandra Sekhar Cheekuru NET UI
 
Top 12 Front End Technologies to Use In 2024.pdf
Top 12 Front End Technologies to Use In 2024.pdfTop 12 Front End Technologies to Use In 2024.pdf
Top 12 Front End Technologies to Use In 2024.pdf
 
ItCamp2012-Real-Time-Web-Web-Sockets-Windows 8- Florin-Cardasim
ItCamp2012-Real-Time-Web-Web-Sockets-Windows 8- Florin-CardasimItCamp2012-Real-Time-Web-Web-Sockets-Windows 8- Florin-Cardasim
ItCamp2012-Real-Time-Web-Web-Sockets-Windows 8- Florin-Cardasim
 
Darrell's Resume
Darrell's ResumeDarrell's Resume
Darrell's Resume
 
Geethu Rajasekharan
Geethu RajasekharanGeethu Rajasekharan
Geethu Rajasekharan
 
ArcReady - Scalable And Usable Web Applications
ArcReady - Scalable And Usable Web ApplicationsArcReady - Scalable And Usable Web Applications
ArcReady - Scalable And Usable Web Applications
 
Narmada Kannan_Resume
Narmada Kannan_ResumeNarmada Kannan_Resume
Narmada Kannan_Resume
 

Dernier

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Dernier (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Building single page, modular html5 applications for PC and Mobile

  • 1. Building single page, modular HTML5 applications for PC and Mobile Lorant Domokos Microsoft Student Partners Fortech @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 2. Mobile & ITCamp 2012 sponsors Development @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 3. Mobile & Agenda Development • What are Single Page Applications? • Architecture • Technologies • Knockout fundamentals • Navigation fundamentals • Services layer • Patterns for modular JavaScript code @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 4. Mobile & Spectrum of Web Apps Development • Static: consist of static HTML pages, CSS, and images, full page refresh, page does not change • Server Rendered: server dynamically assembles page, JavaScript for validation, hover, full page refresh @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 5. Mobile & Spectrum of Web Apps Development • Hybrid Design: similar to server-rendered, but relies heavily on client side Java-Script to deliver an engaging experience. – Islands of richness: islands of interactivity within the site that do not require full-page reloads to change the UI • Single-page Interface: In this model, a full-page load happens only once. Ex: Hotmail, Office Live. • Bani Pierduti is hybrid @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 6. Mobile & Modern Web Applications Development • They are standards-focused, no plugins • They are interactive • They limit full-page reloads • They are asynchronous • They manage data • Runs on any device • Can work offline @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 7. Mobile & Keep user is context Development • No page reload • Users are kept in context • Fluid experience as they navigate from one task to another • Result: great user experience @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 8. Mobile & Single Page Applications Development Rich responsive applications combining the best of the web and desktop, build with HTML5 and JavaScript @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 9. Mobile & Architecture Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 10. Mobile & Architecture Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS JavaScript Client Side Interaction @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 11. Mobile & Architecture Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS Data Service JavaScript Client JSON/XML Side Interaction JavaScript Client Side Interaction @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 12. Mobile & Architecture Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS Data Service JavaScript Client JSON/XML Side Interaction Nav JavaScript Client Side Interaction @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 13. Mobile & Architecture Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS Data Service JavaScript Client JSON/XML Side Interaction Nav JavaScript Client Side Interaction @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 14. Mobile & Architecture Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS Data Service JavaScript Client JSON/XML Side Interaction Nav JavaScript Client Side Interaction Local Storage @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 15. Mobile & Development DEMO MVC 4 SPA @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 16. Mobile & Bani Pierduti Development @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 17. Mobile & Technologies Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS Data Service JavaScript Client JSON/XML Side Interaction Nav WebAPI Node.js JavaScript Client Side Interaction Local Storage @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 18. Mobile & Technologies Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS Data Service JavaScript Client JSON/XML Side Interaction Nav WebAPI Node.js JavaScript Client Side Interaction Local Storage HTML5 @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 19. Mobile & Technologies Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS Data Service JavaScript Client JSON/XML Side Interaction Nav WebAPI Node.js JavaScript Client Side Interaction Upshot.js? Amplify.js Local Storage HTML5 @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 20. Mobile & Technologies Development Server Client ASP.NET Rendered Page HTML/CSS/JS HTML/CSS Nav.js? History.js Data Service JavaScript Client JSON/XML Side Interaction Nav WebAPI Node.js JavaScript Client Side Interaction Upshot.js? Amplify.js Local Storage HTML5 @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 21. Mobile & Technologies Development Server Client Knockout.js Backbone.js ASP.NET Rendered Page JsRender HTML/CSS/JS HTML/CSS Nav.js? History.js Data Service JavaScript Client JSON/XML Side Interaction Nav WebAPI Node.js JavaScript Client Side Interaction Upshot.js? Amplify.js Local Storage HTML5 @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 22. Mobile & Knockout Development • JavaScript MVVM Framework • MVVM-Model-View-ViewModel – Model-business domain objects – View-visible UI – ViewModel-data/operations on UI @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 23. Mobile & Knockout Development • Declarative data bindings, two way • Automatic UI refresh • Dependency tracking, if one object changes all dependent objects change • Templating @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 24. Mobile & Observables Development • They are functions • Bindings observe observables • Declare: var p = ko.observable(); • Read: var r = p(); • Write: p(„value‟); @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 25. Mobile & Observables Development • Types: – Observable: ko.observable(„value‟) – Observable array: ko.observableArray([]) – Computed: ko.computed(function() { return vm.firstName() + „ ‟ + vm.lastName(); }, vm) @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 26. Mobile & Bindings Development • Built in: – Text and Appearance – Forms – Control Flow – Templates • Custom bindings @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 27. Mobile & Text and Appearance Development • Visible-toggle visibility • Text-text value of DOM element • Html-raw HTML of DOM element • Css-css classes • Style-raw style attributes • Attr-any attribute of DOM element @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 28. Mobile & Forms Development • Click-click event handling • Event-handling any event of DOM element • Submit-invoked when form is submitted • Enable-set as enabled • Disable-set as disabled • Value-value of DOM element • Checked-checkbox, radio button • Etc. @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 29. Mobile & Control Flow Development • If-executed if condition is true • Ifnot-executes if condition is false • Foreach-executes for each item in collection – $index – $data • With-Executes for the specified child object @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 30. Mobile & Templates Development • JavaScript templates-traditional JavaScript template in <script> tag • Containerless control flow: template-less, comment based syntax @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 31. Mobile & Navigation and Browser History Development • Traditional: browser manages history, back and forward buttons • URLs can contain a fragment identifier (hash) – This is the part after the # sign • Fragment identifier may also contain name value pairs @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 32. Mobile & Navigation and Browser History Development • If only the fragment identifier changes the browser doesn‟t do a page refresh • They are also not added to history automatically • Fragment identifies can be used to manage screen layout • Application can handle HTML 5 hashchange event @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 33. Mobile & Upshot.js Development • “Proxy” on client side • Retrieves data from service • Paging • Tracks changes • Offline • Is it ready? @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 34. Mobile & Amplify.js Development • Set of components designed to solve common web application problems with a simplistic API • Request management: provides a clean and elegant request abstraction • Client Side Browser & Mobile Device Storage: HTML5 LocalStorage on modern browsers • Client Side Component Communication: pub/sub component to component communication @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 35. Mobile & WebAPI Development Alessandro Pilotti already demonstrated @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 36. Mobile & Modularity Development • Patterns are recommended for separation of concerns, encapsulation, abstraction, etc • Namespaces: var bp = bp || {}; • Structuring patterns • Promise and Deferred patterns for handling asynchrony • Advanced(Not discussed here): – Publish/Subscribe for module communication – Asynchronous module definitions – jQuery Widgets, Plugins @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 37. Mobile & JavaScript structuring patterns Development • Prototype pattern • Module pattern • Revealing module pattern • Revealing prototype pattern @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 38. Mobile & Prototype pattern Development var Calculator = function(element) { this.eqControl = $(element); } Calculator.prototype = { add: function(x, y) { var val = x + y; this.eqControl.text(val); } } @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 39. Mobile & Prototype pattern Development • Pros: – JS built in features – Modularize code into reusable objects – Variables/functions taken out of global namespace – Functions loaded into memory once – Can “override” functions • Cons: – “this” can be tricky – Contstructor separate from prototype definition @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 40. Mobile & Module pattern Development var Calculator = function(element) { // Private member. this.eqControl = $(element); return { // Public interface. add: function(x, y) { var val = x + y; this.eqControl.text(val); } }; } @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 41. Mobile & Module pattern Development • Pros: – Modularize code into reusable objects – Variables/functions taken out of global namespace – Expose only public members, hide private • Cons: – Functions will be duplicated for each instance – Not easy to extend @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 42. Mobile & Revealing Module pattern Development var Calculator = function(element) { // Private members. var eqControl = $(element), add: function(x, y) { var val = x + y; this.eqControl.text(val); }; return { // Public interface. doAdd: add }; } @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 43. Mobile & Revealing Module pattern Development • Pros: – Modularize code into reusable objects – Variables/functions taken out of global namespace – Expose only public members, hide private – Cleaner way to expose public members • Cons: – Functions will be duplicated for each instance – Not easy to extend @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 44. Mobile & Revealing Prototype pattern Development var Calculator = function(element) { this.eqControl = $(element); } Calculator.prototype = function() { var add = function(x, y) { var val = x + y; this.eqControl.text(val); }; return { doAdd: add }; } @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 45. Mobile & Revealing Module pattern Development • Pros: – Combines Prototype and Revealing Module patterns – Modularize code into reusable objects – Variables/functions taken out of global namespace – Functions loaded into memory once – Can “override” functions • Cons: – “this” can be tricky – Contstructor separate from prototype definition @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 46. Mobile & Promise pattern Development • JavaScript requests/operations are asynchronous: – Ajax – Animations – Etc. • How do we link operations if we have dependencies? @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 47. Mobile & Promise pattern Development • jQuery.Deferred public API • defferred.done() • defferred.fail() • defferred.then() • defferred.resolve() • defferred.reject() • jQuery.when() @ itcampro # itcamp12 Premium conference on Microsoft technologies
  • 48. Q&A @ itcampro # itcamp12 Premium conference on Microsoft technologies

Notes de l'éditeur

  1. - They are standards-focused. To have the broadest reach across multiple platforms and devices, applications attempt to implement the current and evolving standards and adopt future standards once ratified.- They are interactive. Modern web applications keep the user engaged by providing constant feedback on their actions. This feedback can come in the form of messages, animations to hide or show elements, mouse-over effects, drag and drop feedback, the automatic refreshing of screen data, animation of various elements, or the implementation of fade-in or fade-out effects. Interactive applications leverage the fast JavaScript engines in modern browsers to perform their client-side tasks.- They limit full-page reloads. Modern web applications seek to limit the number of full page reloads. Reloads are much slower than a localized Ajax call to update a portion of the UI. Full-page reloads also limit the ability to animate state or page changes. By not performing a full-page reload, users can be kept in context, providing a fluid experience as they navigate from one task to another.- They are asynchronous. Modern web applications use Ajax to dynamically load data, page fragments, or other assets instead of performing a full-page reload to acquire data or HTML content. Because the loading of data is asynchronous, the UI is able to stay responsive and keep the user informed while the data request is being fulfilled. This asynchronous on-demand loading also reduces application response time because requests can be tuned to return only the data and other content that needs to change.- They manage data. When applicable, modern web applications provide client-side data caching and pre-fetching to boost client-side performance. This enables the UI to immediately respond to user input gestures because it does not have to make a call to the server for data. Data caching also serves to minimize the impact on server resources, increasing application scalability because fewer calls to the server are required.