SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Maurice de Beijer
Who am I
 Maurice de Beijer
 The Problem Solver
 Microsoft Integration MVP
 DevelopMentor instructor
 Twitter:   @mauricedb
 Blog:      http://msmvps.com/blogs/theproblemsolver/
 Web:       http://www.HTML5Support.nl
 E-mail:    mauricedb@computer.org
What we aren’t going to cover
 But I would really like to!
    Asynchronous Module Definition/RequireJS
    TypeScript
    CSS3
    LESS/SASS
    Tooling
 But I will in my Modern Web Development session at
 the TechDays 
What are we going to cover
 Polyfills
 Semantic elements
 Databinding & templates
 WebSockets
 Drag/Drop
 Graphics
 Storing data in the browser
The demo application
   Multiple concurent users
   Business rules that need to be enforced
   Use charts for reporting
   Support multiple devices
     Desktop
     Tablet with touch
 Support old versions of Internet Explorer
    10 to 20% of users use Internet Explorer 8


                  http://bit.ly/DotNed
Polyfills
 Not every browser supports every HTML5 feature
    Especially true with old browsers
 Many missing features can be added using a polyfill
    Offers the standard API
    Often done in JavaScript
    JavaScript is slow in older browsers 
 A few good lists to check
    Modernizr HTML5 Cross Browser Polyfills
    HTML5 please
HTML5 Semantic elements
 New HTML5 elements
   <nav>
   <section>
   <header>
   <footer>
   <article>
   <aside>
HTML5 Semantic elements
 How about support?
HTML5 Semantic elements
 Why use them?
   Searchability
   Accessibility
 Neither really makes sense
   Search engines don’t really care
   Use WAI-ARIA for accessibility support
 Make sure to add support in older versions of IE
   Modernizr
   Html5Shiv
HTML5 Semantic elements
Databinding & templates
 Construct HTML snippets using JavaScript or jQuery
    Is tedious as best
 Use a richer application library
    Backbone
    Knockout
    Ember
    ...
 Choosing one is a matter of taste
    Checkout TodoMVC for a comparison with a to do app
    My choice is Knockout
Databinding & templates
WebSockets
 A bi-directional socket connection
    Between a web browser and the web server
 The server can push updates to the browser
    Refreshing the browser to see updates is so 2012 
 Not just for games and chat applications
   Any application where you want fast updates
   Decrease the chance of concurrency issues
WebSockets
 How about support?
WebSockets
 Suffers from lack of infrastructure support
    Routers and firewalls can cause issues
 The API is low level
    Messages are just simple objects
    You might need to retransmit missed messages
 Use ASP.NET SignalR
    Uses WebSockets if possible
    Otherwise it uses fallbacks like Comet
    Supports scale out scenarios
    Uses a very simple API
WebSockets
Drag and Drop
 Drag and drop can be a very intuitive user interaction
    Often seen as more fun by users
 Very common interaction on tablets
    But works equally well with a mouse
 HTML5 supports drag and drop
    Including dragging from the file system
Drag and Drop
How about support?
Drag and Drop
 Use jQuery UI instead of the HTML5 capabilities
    Use jQuery UI Touch Punch for touch support
    Add -ms-touch-action: none in CSS for Windows 8
Drag and Drop
Graphics
 Rich graphics are common in modern applications
    Interactive graphics
    Charts
 Often generated on the client
    Not just images downloaded from the server
 Two basic options
    Scalable Vector Graphics
    Canvas
Comparison of Canvas and SVG
Canvas                                        SVG
Pixel-based (canvas is essentially an image   Object Model-based (SVG elements are
element with a drawing API)                   similar to HTML elements)
Single HTML element similar to <img> in       Multiple graphical elements which become
behavior                                      part of the Document Object Model (DOM)
                                              Visual presentation created with markup and
Visual presentation created and modified
                                              modified by CSS or programmatically through
programmatically through script
                                              script
Event model/user interaction is coarse—at
                                              Event model/user interaction is object-based
the canvas element only; interactions must be
                                              at the level of primitive graphic elements—
manually programmed from mouse
                                              lines, rectangles, paths
coordinates
API does not support accessibility; markup-
                                             SVG markup and object model directly
based techniques must be used in addition to
                                             supports accessibility
canvas
SVG
 How about support?
Canvas
 How about support?
Graphics
 Use a library to make the API easier
    Don’t worry about Canvas versus SVG
 jqPlot is great for charts
    It uses canvas
    Includes exCanvas for IE 7/8 support
 Raphaël is a great choice for general graphics
    It uses SVG
    Uses VML for IE 7/8 support
Graphics
Storing data in the browser
 Lots of data changes only infrequently
    Don’t waste time by loading it every time
 HTTP caching can help
    But is less flexible
 HTML5 has two mechanisms for local storage
    LocalStorage is a simple dictionary
    IndexedDB is a document database
    Web SQL is also an option but has been deprecated
IndexedDB
 How about support?
LocalStorage
 How about support?
Web SQL Database
 How about support?
Storing data in the browser
 LocalStorage is well supported
    Except in very old versions of IE
 IndexedDB is much more powerful
    But the API is hard to use
 Lawnchair is easy to use
    Abstracts the underlying data storage
    Can use LocalStorage, IndexedDB or other storage
 db.js makes IndexedDB easy to use
    But requires a polyfill in old browsers
Storing data in the browser
Conclusion
 There is lots of goodness in HTML5
    But not everything is as useful
 Some of the API’s are hard to use
    But there are good libraries to make things easier
 Think about support with older browsers
    Use polyfills where needed


 Download the demo code

Weitere ähnliche Inhalte

Was ist angesagt?

Bootstrap Presentation Mitesh
Bootstrap Presentation MiteshBootstrap Presentation Mitesh
Bootstrap Presentation Mitesh
Mitesh Gandhi
 
WebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page AppsWebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page Apps
Pop Apps
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
Chris Canal
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
KMS Technology
 

Was ist angesagt? (20)

A Smooth Transition to HTML5
A Smooth Transition to HTML5A Smooth Transition to HTML5
A Smooth Transition to HTML5
 
Bootstrap Presentation Mitesh
Bootstrap Presentation MiteshBootstrap Presentation Mitesh
Bootstrap Presentation Mitesh
 
WebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page AppsWebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page Apps
 
Edy Dawson Notes on SF HTML5 Dev Conf
Edy Dawson Notes on SF HTML5 Dev ConfEdy Dawson Notes on SF HTML5 Dev Conf
Edy Dawson Notes on SF HTML5 Dev Conf
 
Quick Application Development with Web Frameworks
Quick Application Development with Web FrameworksQuick Application Development with Web Frameworks
Quick Application Development with Web Frameworks
 
Single page applications
Single page applicationsSingle page applications
Single page applications
 
node.js in action
node.js in actionnode.js in action
node.js in action
 
A Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVMA Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVM
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and Framework
 
Building WordPress sites with AngularJS and the RESTful plugin JSON API
Building WordPress sites with AngularJS and the RESTful plugin JSON APIBuilding WordPress sites with AngularJS and the RESTful plugin JSON API
Building WordPress sites with AngularJS and the RESTful plugin JSON API
 
Making Single Page Applications (SPA) faster
Making Single Page Applications (SPA) faster Making Single Page Applications (SPA) faster
Making Single Page Applications (SPA) faster
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
 
Wheel.js
Wheel.jsWheel.js
Wheel.js
 
The shift to the edge
The shift to the edgeThe shift to the edge
The shift to the edge
 
The future of Activiti Cloud @ DevCon 2019
The future of Activiti Cloud @ DevCon 2019The future of Activiti Cloud @ DevCon 2019
The future of Activiti Cloud @ DevCon 2019
 
Web Based Development Introduction
Web Based Development IntroductionWeb Based Development Introduction
Web Based Development Introduction
 
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
 
Html5
Html5Html5
Html5
 
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
 

Ähnlich wie Practical html5

Pablo Villalba -
Pablo Villalba - Pablo Villalba -
Pablo Villalba -
.toster
 
Easy charting with
Easy charting withEasy charting with
Easy charting with
Major Ye
 
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
John Hartley
 

Ähnlich wie Practical html5 (20)

HTML5
HTML5HTML5
HTML5
 
Pablo Villalba -
Pablo Villalba - Pablo Villalba -
Pablo Villalba -
 
Web development concepts using microsoft technologies
Web development concepts using microsoft technologiesWeb development concepts using microsoft technologies
Web development concepts using microsoft technologies
 
Easy charting with
Easy charting withEasy charting with
Easy charting with
 
Spsmi13 charts
Spsmi13 chartsSpsmi13 charts
Spsmi13 charts
 
Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
Web Applications Are Technically Awesome!
Web Applications Are Technically Awesome!Web Applications Are Technically Awesome!
Web Applications Are Technically Awesome!
 
Get Started with JavaScript Frameworks
Get Started with JavaScript FrameworksGet Started with JavaScript Frameworks
Get Started with JavaScript Frameworks
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015
 
An introduction to html5 by Devs
An introduction to html5 by DevsAn introduction to html5 by Devs
An introduction to html5 by Devs
 
JQuery Mobile vs Appcelerator Titanium vs Sencha Touch
JQuery Mobile vs Appcelerator Titanium vs Sencha TouchJQuery Mobile vs Appcelerator Titanium vs Sencha Touch
JQuery Mobile vs Appcelerator Titanium vs Sencha Touch
 
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
 
HTML5 Technical Executive Summary
HTML5 Technical Executive SummaryHTML5 Technical Executive Summary
HTML5 Technical Executive Summary
 
Building the next generation of browser apps today
Building the next generation of browser apps todayBuilding the next generation of browser apps today
Building the next generation of browser apps today
 
Html5
Html5Html5
Html5
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the web
 
Javascript Client & Server Architectures
Javascript Client & Server ArchitecturesJavascript Client & Server Architectures
Javascript Client & Server Architectures
 
Give your web apps some backbone
Give your web apps some backboneGive your web apps some backbone
Give your web apps some backbone
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web Application
 

Mehr von Maurice De Beijer [MVP]

Mehr von Maurice De Beijer [MVP] (20)

Practice TypeScript Techniques Building React Server Components App
Practice TypeScript Techniques Building React Server Components AppPractice TypeScript Techniques Building React Server Components App
Practice TypeScript Techniques Building React Server Components App
 
A foolproof Way to Estimate a Software Project
A foolproof Way to Estimate a Software ProjectA foolproof Way to Estimate a Software Project
A foolproof Way to Estimate a Software Project
 
Surati Tech Talks 2022 / Build reliable Svelte applications using Cypress
Surati Tech Talks 2022 / Build reliable Svelte applications using CypressSurati Tech Talks 2022 / Build reliable Svelte applications using Cypress
Surati Tech Talks 2022 / Build reliable Svelte applications using Cypress
 
Build reliable Svelte applications using Cypress
Build reliable Svelte applications using CypressBuild reliable Svelte applications using Cypress
Build reliable Svelte applications using Cypress
 
Building Reliable Applications Using React, .NET & Azure
Building Reliable Applications Using React, .NET & AzureBuilding Reliable Applications Using React, .NET & Azure
Building Reliable Applications Using React, .NET & Azure
 
Concurrent Rendering Adventures in React 18
Concurrent Rendering Adventures in React 18Concurrent Rendering Adventures in React 18
Concurrent Rendering Adventures in React 18
 
Building reliable applications with React, C#, and Azure
Building reliable applications with React, C#, and AzureBuilding reliable applications with React, C#, and Azure
Building reliable applications with React, C#, and Azure
 
Building large and scalable mission critical applications with React
Building large and scalable mission critical applications with ReactBuilding large and scalable mission critical applications with React
Building large and scalable mission critical applications with React
 
Building Reliable Applications Using React, .NET & Azure
Building Reliable Applications Using React, .NET & AzureBuilding Reliable Applications Using React, .NET & Azure
Building Reliable Applications Using React, .NET & Azure
 
Why I am hooked on the future of React
Why I am hooked on the future of ReactWhy I am hooked on the future of React
Why I am hooked on the future of React
 
Building reliable web applications using Cypress
Building reliable web applications using CypressBuilding reliable web applications using Cypress
Building reliable web applications using Cypress
 
Getting started with React Suspense and concurrent rendering
Getting started with React Suspense and concurrent renderingGetting started with React Suspense and concurrent rendering
Getting started with React Suspense and concurrent rendering
 
React suspense, not just for Alfred Hitchcock
React suspense, not just for Alfred HitchcockReact suspense, not just for Alfred Hitchcock
React suspense, not just for Alfred Hitchcock
 
From zero to hero with the Reactive extensions for JavaScript
From zero to hero with the Reactive extensions for JavaScriptFrom zero to hero with the Reactive extensions for JavaScript
From zero to hero with the Reactive extensions for JavaScript
 
Why I am hooked on the future of React
Why I am hooked on the future of ReactWhy I am hooked on the future of React
Why I am hooked on the future of React
 
The new React
The new React The new React
The new React
 
From zero to hero with the reactive extensions for JavaScript
From zero to hero with the reactive extensions for JavaScriptFrom zero to hero with the reactive extensions for JavaScript
From zero to hero with the reactive extensions for JavaScript
 
Why I am hooked on the future of React
Why I am hooked on the future of ReactWhy I am hooked on the future of React
Why I am hooked on the future of React
 
I am hooked on React
I am hooked on ReactI am hooked on React
I am hooked on React
 
Create flexible React applications using GraphQL apis
Create flexible React applications using GraphQL apisCreate flexible React applications using GraphQL apis
Create flexible React applications using GraphQL apis
 

Practical html5

  • 2. Who am I  Maurice de Beijer  The Problem Solver  Microsoft Integration MVP  DevelopMentor instructor  Twitter: @mauricedb  Blog: http://msmvps.com/blogs/theproblemsolver/  Web: http://www.HTML5Support.nl  E-mail: mauricedb@computer.org
  • 3. What we aren’t going to cover  But I would really like to!  Asynchronous Module Definition/RequireJS  TypeScript  CSS3  LESS/SASS  Tooling  But I will in my Modern Web Development session at the TechDays 
  • 4. What are we going to cover  Polyfills  Semantic elements  Databinding & templates  WebSockets  Drag/Drop  Graphics  Storing data in the browser
  • 5. The demo application  Multiple concurent users  Business rules that need to be enforced  Use charts for reporting  Support multiple devices  Desktop  Tablet with touch  Support old versions of Internet Explorer  10 to 20% of users use Internet Explorer 8 http://bit.ly/DotNed
  • 6. Polyfills  Not every browser supports every HTML5 feature  Especially true with old browsers  Many missing features can be added using a polyfill  Offers the standard API  Often done in JavaScript  JavaScript is slow in older browsers   A few good lists to check  Modernizr HTML5 Cross Browser Polyfills  HTML5 please
  • 7. HTML5 Semantic elements  New HTML5 elements  <nav>  <section>  <header>  <footer>  <article>  <aside>
  • 8. HTML5 Semantic elements  How about support?
  • 9. HTML5 Semantic elements  Why use them?  Searchability  Accessibility  Neither really makes sense  Search engines don’t really care  Use WAI-ARIA for accessibility support  Make sure to add support in older versions of IE  Modernizr  Html5Shiv
  • 11. Databinding & templates  Construct HTML snippets using JavaScript or jQuery  Is tedious as best  Use a richer application library  Backbone  Knockout  Ember  ...  Choosing one is a matter of taste  Checkout TodoMVC for a comparison with a to do app  My choice is Knockout
  • 13. WebSockets  A bi-directional socket connection  Between a web browser and the web server  The server can push updates to the browser  Refreshing the browser to see updates is so 2012   Not just for games and chat applications  Any application where you want fast updates  Decrease the chance of concurrency issues
  • 15. WebSockets  Suffers from lack of infrastructure support  Routers and firewalls can cause issues  The API is low level  Messages are just simple objects  You might need to retransmit missed messages  Use ASP.NET SignalR  Uses WebSockets if possible  Otherwise it uses fallbacks like Comet  Supports scale out scenarios  Uses a very simple API
  • 17. Drag and Drop  Drag and drop can be a very intuitive user interaction  Often seen as more fun by users  Very common interaction on tablets  But works equally well with a mouse  HTML5 supports drag and drop  Including dragging from the file system
  • 18. Drag and Drop How about support?
  • 19. Drag and Drop  Use jQuery UI instead of the HTML5 capabilities  Use jQuery UI Touch Punch for touch support  Add -ms-touch-action: none in CSS for Windows 8
  • 21. Graphics  Rich graphics are common in modern applications  Interactive graphics  Charts  Often generated on the client  Not just images downloaded from the server  Two basic options  Scalable Vector Graphics  Canvas
  • 22. Comparison of Canvas and SVG Canvas SVG Pixel-based (canvas is essentially an image Object Model-based (SVG elements are element with a drawing API) similar to HTML elements) Single HTML element similar to <img> in Multiple graphical elements which become behavior part of the Document Object Model (DOM) Visual presentation created with markup and Visual presentation created and modified modified by CSS or programmatically through programmatically through script script Event model/user interaction is coarse—at Event model/user interaction is object-based the canvas element only; interactions must be at the level of primitive graphic elements— manually programmed from mouse lines, rectangles, paths coordinates API does not support accessibility; markup- SVG markup and object model directly based techniques must be used in addition to supports accessibility canvas
  • 23. SVG  How about support?
  • 25. Graphics  Use a library to make the API easier  Don’t worry about Canvas versus SVG  jqPlot is great for charts  It uses canvas  Includes exCanvas for IE 7/8 support  Raphaël is a great choice for general graphics  It uses SVG  Uses VML for IE 7/8 support
  • 27. Storing data in the browser  Lots of data changes only infrequently  Don’t waste time by loading it every time  HTTP caching can help  But is less flexible  HTML5 has two mechanisms for local storage  LocalStorage is a simple dictionary  IndexedDB is a document database  Web SQL is also an option but has been deprecated
  • 30. Web SQL Database  How about support?
  • 31. Storing data in the browser  LocalStorage is well supported  Except in very old versions of IE  IndexedDB is much more powerful  But the API is hard to use  Lawnchair is easy to use  Abstracts the underlying data storage  Can use LocalStorage, IndexedDB or other storage  db.js makes IndexedDB easy to use  But requires a polyfill in old browsers
  • 32. Storing data in the browser
  • 33. Conclusion  There is lots of goodness in HTML5  But not everything is as useful  Some of the API’s are hard to use  But there are good libraries to make things easier  Think about support with older browsers  Use polyfills where needed  Download the demo code

Hinweis der Redaktion

  1. http://www.netmagazine.com/features/truth-about-structuring-html5-page
  2. See http://blogs.msdn.com/b/ie/archive/2011/04/22/thoughts-on-when-to-use-canvas-and-svg.aspx