SlideShare uma empresa Scribd logo
1 de 25
A HTML5 & IE10
PROOF OF CONCEPT
Thibault Lanssade     Lucas Lampietti
           @tibolan     @lucaslampietti
    App Developper      Architect
                 #JS    #JS
     #HTML5 #CSS3


  Nicolas Massouh       Damien Berseron
  @nicolasmassouh       @hikkyu
 Motion developper      Motion developper
    #CSS3 #HTML5        #CSS3 #HTML5



      Florian Harmel    Loïc Calvy
     @florianharmel     @loic_calvy
Creative Technologist   CTO
                 #JS    #JS
PLEASE, DRAW ME A SLIDOTRON
OUR ANSWER : SNAPYX
SNAPYX ?

WHAT ?                HOW ?

                      HTML5 & CSS3
A CLIENT SIDE
APPLICATION           BACKBONE.JS &
                      BACKBONE-RELATIONAL.JS
SINGLE PAGE           & BACKBONE-
                      INDEXEDDB.JS
APPLICATION
                      APP CACHE (CACHE
OFFLINE USAGE –       MANIFEST)
CLIENT SIDE STORAGE
                      INDEXEDDB
IMAGING TOOL          FILE API / CANVAS
HTML5 / CSS3 : Project structure

CLIENT SIDE APPLICATION
SOME NEW THINGS IN HTML5
SOME NEW THINGS IN HTML5
               .parent {
                 display: -ms-grid;
                 -ms-grid-columns:(220px 10px)[12];
                 -ms-grid-rows: 50px 220px 10px 220px 27px;
               }
               .bloc1 {
                 -ms-grid-column:1; -ms-grid-row:2;
                  height:220px; width:220px;
               }
               .bloc2 {
                 -ms-grid-column:1; -ms-grid-row:4;
                  height:220px; width:220px;
               }
               .bloc3 {
                 -ms-grid-column:3; -ms-grid-row:2; -ms-grid-row-span:3;
                 width:450px; height:450px;
               }
               .bloc4 {
                 -ms-grid-column:7; -ms-grid-row:2;
                  width:450px; height:220px;
               }
               .bloc5 {
                 -ms-grid-column:7; -ms-grid-row:4;
               }
               .bloc6 {
                 -ms-grid-column:9; -ms-grid-row:4;
               }
Backbone.js project organisation

SINGLE PAGE APPLICATION
BACKBONE.JS

 Client Side « MVP » Framework
 REST / JSON
 Server Side handle persistence (and
  create id)
 Models (& Collections) / Views /
  Routes
 Events
 Backbone.Sync
 Template is basically managed by
  Underscore.js
BACKBONE.JS = RAW FRAMEWORK

 No default View
 No default Model
 Router not handle views lifecycles
DEFAULT VIEW

 DefaultView extend initialize to
 remotely get and apply view template
  Templates in lazyloading mode
  HTML indented and easily editable by
    IDE
 Method to unload views
  Disposing HTML in DOM
  Unbind events
WATCH PERFORMANCES
ROUTER

 Adding a business layer to handle init
  splashscreen
 No HTML5 deeplinking
IndexedDB

CLIENT SIDE STORAGE
BACKBONE.JS + BACKBONE-
INDEXEDDB.JS
 Backbone.Sync function overridded
 Change Server Side storage by client
  Side with HTML5 IndexedDB API
 IndexedDB :
  No relationnal local Database
  Complex objects storage as JSON
  Natively asynchronous
 Fork backbone-indexeddb.js :
  Now support chrome 17/
   FF11/IE10DP&CP
  Unit testing : jstestdriver + qunit
WORK WITH INDEXEDDB?

 Developpement phase :
  deletedb or fallback to random db name
    at each F5
 Control : Idbexplorer.htm
 Using unit tests
 No transactions or updating during
  schema version upgrade
 IndexedDB is roughly implemented
  All objects types are not supported
    depending on browsers
FileAPI

LOCAL IMAGE UPLOAD +
PREPARE FOR STORAGE
FILE API

 File API usage context
  Native drag’n’drop from desktop allowing
   multiple file upload
  Binary conversion of the uploaded File
   object
  Keeping model image content for persistent
   storage
 Goal
  Treating large 8M files on client side
  Store it in the right way
  Using it in SVG or Canvas
HOW TO STORE IMAGES? NO KIDING
TO HEAVY FOR FIREBUG????

 First try with base64 :


 To Heavy in DOM and for Firebug!
 Save in blob (FF11 & IE10 CP):
Canvas / SVG

LOCAL IMAGE TREATMENT
WHY CANVAS TO DEAL WITH STATIC
IMAGES?
 SVG limitations
  Unable to export a SVG filter into a Base
   64 string usable in images tag
  Photo filters are harder to calibrate in
   SVG
 Our solution
  Using canvas to treat images px/px
  Using Pixastic library (under MPL)
SUM UP

 A lot of new things
 Need to go fast ;)
 No idea of the performance troubles
  related to HTML5 new things
 Small knowledges on big complex
  HTML5 apps

 Experimental brief
 Experimental technologies
 F*** experimental browser
A SMALL THING WE ARE PROUD OF

An app on the Win 8 Store
http://www.ekino.com/
   @3k1n0

To see or read :

• « Slides, quelques démos et vidéos des sessions IE10/HTML5/CSS3 des Techdays
  2012 » (fr)
  David Roussethttp://blogs.msdn.com/b/davrous/archive/2012/02/20/slides-quelques-
  d-233-mos-et-vid-233-os-des-sessions-ie10-html5-css3-des-techdays-2012.aspx

• Keynote « World of developers » including SnapyX demo (fr)
  MS TechDays 2012 :
  http://www.youtube.com/watch?v=r64B13fh9nc

• Vidéo de présentation de l’application :
  http://www.youtube.com/watch?v=3winPXeMx_c

Frameworks and plugins Used :

• Backbone : here
• Backbone Relational : here
• Backbone Indexed DB
      • Original : here
      • Our fork : here
• Underscore : here
• Pixastic : here
• IdbExplorer : here
• Raphael Goetter CSS3 presentation : here

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

GraphQL Bangkok Meetup 6.0
GraphQL Bangkok Meetup 6.0GraphQL Bangkok Meetup 6.0
GraphQL Bangkok Meetup 6.0
 
JavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and RiceJavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and Rice
 
Cross-platform JavaScript
Cross-platform JavaScriptCross-platform JavaScript
Cross-platform JavaScript
 
The MEAN stack - SoCalCodeCamp - june 29th 2014
The MEAN stack - SoCalCodeCamp - june 29th 2014The MEAN stack - SoCalCodeCamp - june 29th 2014
The MEAN stack - SoCalCodeCamp - june 29th 2014
 
MVP with GWT and GWTP
MVP with GWT and GWTPMVP with GWT and GWTP
MVP with GWT and GWTP
 
Gutenberg: You Can't Teach an Old Dev New Tricks - WordCamp Chicago 2018
Gutenberg: You Can't Teach an Old Dev New Tricks - WordCamp Chicago 2018Gutenberg: You Can't Teach an Old Dev New Tricks - WordCamp Chicago 2018
Gutenberg: You Can't Teach an Old Dev New Tricks - WordCamp Chicago 2018
 
JS digest. May 2017
JS digest. May 2017JS digest. May 2017
JS digest. May 2017
 
001. Introduction about React
001. Introduction about React001. Introduction about React
001. Introduction about React
 
Introduction à GWT
Introduction à GWTIntroduction à GWT
Introduction à GWT
 
Firebase and AngularJS
Firebase and AngularJSFirebase and AngularJS
Firebase and AngularJS
 
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
Conquer Architectural Challenges with End-to-End JavaScript - enterJS 2014
 
How to keep Drupal relevant in the Git-based and API-driven CMS era - BADCamp
How to keep Drupal relevant in the Git-based and API-driven CMS era - BADCampHow to keep Drupal relevant in the Git-based and API-driven CMS era - BADCamp
How to keep Drupal relevant in the Git-based and API-driven CMS era - BADCamp
 
RIA front-ends: Flex, GWT integration in Nuxeo
RIA front-ends: Flex, GWT integration in NuxeoRIA front-ends: Flex, GWT integration in Nuxeo
RIA front-ends: Flex, GWT integration in Nuxeo
 
JS digest, March 2017
JS digest, March 2017JS digest, March 2017
JS digest, March 2017
 
006. React - Redux framework
006. React - Redux framework006. React - Redux framework
006. React - Redux framework
 
005. a React project structure
005. a React project structure005. a React project structure
005. a React project structure
 
JS digest. Mid-Summer 2017
JS digest. Mid-Summer 2017JS digest. Mid-Summer 2017
JS digest. Mid-Summer 2017
 
Node.js
Node.jsNode.js
Node.js
 
The Future Is The Cloud
The Future Is The CloudThe Future Is The Cloud
The Future Is The Cloud
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
 

Destaque

Goodwin’s theory
Goodwin’s theoryGoodwin’s theory
Goodwin’s theory
Angeline1
 
What is the function of a music video
What is the function of a music videoWhat is the function of a music video
What is the function of a music video
Angeline1
 
How i used video transition (editing)
How i used video transition (editing)How i used video transition (editing)
How i used video transition (editing)
Angeline1
 
IITI Hub BTP Report
IITI Hub BTP ReportIITI Hub BTP Report
IITI Hub BTP Report
harshit4003
 
Maria chimborazo primero d
Maria chimborazo  primero dMaria chimborazo  primero d
Maria chimborazo primero d
alexa-sucuy
 
Analysis of digipak mock up
Analysis of digipak mock upAnalysis of digipak mock up
Analysis of digipak mock up
Angeline1
 
Don’t hold your breath
Don’t hold your breathDon’t hold your breath
Don’t hold your breath
Angeline1
 
Run leona lewis
Run  leona lewisRun  leona lewis
Run leona lewis
Angeline1
 

Destaque (18)

Goodwin’s theory
Goodwin’s theoryGoodwin’s theory
Goodwin’s theory
 
What is the function of a music video
What is the function of a music videoWhat is the function of a music video
What is the function of a music video
 
Hola
HolaHola
Hola
 
How i used video transition (editing)
How i used video transition (editing)How i used video transition (editing)
How i used video transition (editing)
 
IITI Hub BTP Report
IITI Hub BTP ReportIITI Hub BTP Report
IITI Hub BTP Report
 
Maria chimborazo primero d
Maria chimborazo  primero dMaria chimborazo  primero d
Maria chimborazo primero d
 
Analysis of digipak mock up
Analysis of digipak mock upAnalysis of digipak mock up
Analysis of digipak mock up
 
Windows azure overview
Windows azure overviewWindows azure overview
Windows azure overview
 
Don’t hold your breath
Don’t hold your breathDon’t hold your breath
Don’t hold your breath
 
Locations
LocationsLocations
Locations
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloud
 
JAX-RS 2.0: RESTful Web services on steroids
JAX-RS 2.0: RESTful Web services on steroidsJAX-RS 2.0: RESTful Web services on steroids
JAX-RS 2.0: RESTful Web services on steroids
 
Качество - залог успеха Maika ua
Качество - залог успеха Maika uaКачество - залог успеха Maika ua
Качество - залог успеха Maika ua
 
Run leona lewis
Run  leona lewisRun  leona lewis
Run leona lewis
 
Qstix
QstixQstix
Qstix
 
Ravers
RaversRavers
Ravers
 
Smm для maika
Smm для maikaSmm для maika
Smm для maika
 
Zachman Framework As Enterprise Architecture Ontology
Zachman Framework As Enterprise Architecture OntologyZachman Framework As Enterprise Architecture Ontology
Zachman Framework As Enterprise Architecture Ontology
 

Semelhante a SnapyX - ParisJS

WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
Shumpei Shiraishi
 
Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012
Stephan Hochdörfer
 

Semelhante a SnapyX - ParisJS (20)

Angularjs practical project experiences with javascript development in a bank
Angularjs practical project experiences with javascript development in a bankAngularjs practical project experiences with javascript development in a bank
Angularjs practical project experiences with javascript development in a bank
 
JavaONE 2012 Using Java with HTML5 and CSS3
JavaONE 2012 Using Java with HTML5 and CSS3JavaONE 2012 Using Java with HTML5 and CSS3
JavaONE 2012 Using Java with HTML5 and CSS3
 
Introduction to HTML5 & CSS3
Introduction to HTML5 & CSS3Introduction to HTML5 & CSS3
Introduction to HTML5 & CSS3
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web Application
 
Html5 more than just html5 v final
Html5  more than just html5 v finalHtml5  more than just html5 v final
Html5 more than just html5 v final
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
 
VizEx View HTML5 Workshop
VizEx View HTML5 WorkshopVizEx View HTML5 Workshop
VizEx View HTML5 Workshop
 
VizEx View HTML5 Workshop
VizEx View HTML5 WorkshopVizEx View HTML5 Workshop
VizEx View HTML5 Workshop
 
Web Performance Part 4 "Client-side performance"
Web Performance Part 4  "Client-side performance"Web Performance Part 4  "Client-side performance"
Web Performance Part 4 "Client-side performance"
 
JS FAST Prototyping with AngularJS & RequireJS
JS FAST Prototyping with AngularJS & RequireJSJS FAST Prototyping with AngularJS & RequireJS
JS FAST Prototyping with AngularJS & RequireJS
 
Education&work experience
Education&work experienceEducation&work experience
Education&work experience
 
Planbox Backbone MVC
Planbox Backbone MVCPlanbox Backbone MVC
Planbox Backbone MVC
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
 
Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012
 
Mobile Web Application Development (An Insight)
Mobile Web Application Development (An Insight)Mobile Web Application Development (An Insight)
Mobile Web Application Development (An Insight)
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
 
Demystifying HTML5
Demystifying HTML5Demystifying HTML5
Demystifying HTML5
 
How I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScriptHow I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScript
 
Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 

SnapyX - ParisJS

  • 1. A HTML5 & IE10 PROOF OF CONCEPT
  • 2. Thibault Lanssade Lucas Lampietti @tibolan @lucaslampietti App Developper Architect #JS #JS #HTML5 #CSS3 Nicolas Massouh Damien Berseron @nicolasmassouh @hikkyu Motion developper Motion developper #CSS3 #HTML5 #CSS3 #HTML5 Florian Harmel Loïc Calvy @florianharmel @loic_calvy Creative Technologist CTO #JS #JS
  • 3. PLEASE, DRAW ME A SLIDOTRON
  • 4. OUR ANSWER : SNAPYX
  • 5. SNAPYX ? WHAT ? HOW ? HTML5 & CSS3 A CLIENT SIDE APPLICATION BACKBONE.JS & BACKBONE-RELATIONAL.JS SINGLE PAGE & BACKBONE- INDEXEDDB.JS APPLICATION APP CACHE (CACHE OFFLINE USAGE – MANIFEST) CLIENT SIDE STORAGE INDEXEDDB IMAGING TOOL FILE API / CANVAS
  • 6. HTML5 / CSS3 : Project structure CLIENT SIDE APPLICATION
  • 7. SOME NEW THINGS IN HTML5
  • 8. SOME NEW THINGS IN HTML5 .parent { display: -ms-grid; -ms-grid-columns:(220px 10px)[12]; -ms-grid-rows: 50px 220px 10px 220px 27px; } .bloc1 { -ms-grid-column:1; -ms-grid-row:2; height:220px; width:220px; } .bloc2 { -ms-grid-column:1; -ms-grid-row:4; height:220px; width:220px; } .bloc3 { -ms-grid-column:3; -ms-grid-row:2; -ms-grid-row-span:3; width:450px; height:450px; } .bloc4 { -ms-grid-column:7; -ms-grid-row:2; width:450px; height:220px; } .bloc5 { -ms-grid-column:7; -ms-grid-row:4; } .bloc6 { -ms-grid-column:9; -ms-grid-row:4; }
  • 10. BACKBONE.JS  Client Side « MVP » Framework  REST / JSON  Server Side handle persistence (and create id)  Models (& Collections) / Views / Routes  Events  Backbone.Sync  Template is basically managed by Underscore.js
  • 11. BACKBONE.JS = RAW FRAMEWORK  No default View  No default Model  Router not handle views lifecycles
  • 12. DEFAULT VIEW  DefaultView extend initialize to remotely get and apply view template Templates in lazyloading mode HTML indented and easily editable by IDE  Method to unload views Disposing HTML in DOM Unbind events
  • 14. ROUTER  Adding a business layer to handle init splashscreen  No HTML5 deeplinking
  • 16. BACKBONE.JS + BACKBONE- INDEXEDDB.JS  Backbone.Sync function overridded  Change Server Side storage by client Side with HTML5 IndexedDB API  IndexedDB : No relationnal local Database Complex objects storage as JSON Natively asynchronous  Fork backbone-indexeddb.js : Now support chrome 17/ FF11/IE10DP&CP Unit testing : jstestdriver + qunit
  • 17. WORK WITH INDEXEDDB?  Developpement phase : deletedb or fallback to random db name at each F5  Control : Idbexplorer.htm  Using unit tests  No transactions or updating during schema version upgrade  IndexedDB is roughly implemented All objects types are not supported depending on browsers
  • 18. FileAPI LOCAL IMAGE UPLOAD + PREPARE FOR STORAGE
  • 19. FILE API  File API usage context Native drag’n’drop from desktop allowing multiple file upload Binary conversion of the uploaded File object Keeping model image content for persistent storage  Goal Treating large 8M files on client side Store it in the right way Using it in SVG or Canvas
  • 20. HOW TO STORE IMAGES? NO KIDING TO HEAVY FOR FIREBUG????  First try with base64 :  To Heavy in DOM and for Firebug!  Save in blob (FF11 & IE10 CP):
  • 21. Canvas / SVG LOCAL IMAGE TREATMENT
  • 22. WHY CANVAS TO DEAL WITH STATIC IMAGES?  SVG limitations Unable to export a SVG filter into a Base 64 string usable in images tag Photo filters are harder to calibrate in SVG  Our solution Using canvas to treat images px/px Using Pixastic library (under MPL)
  • 23. SUM UP  A lot of new things  Need to go fast ;)  No idea of the performance troubles related to HTML5 new things  Small knowledges on big complex HTML5 apps  Experimental brief  Experimental technologies  F*** experimental browser
  • 24. A SMALL THING WE ARE PROUD OF An app on the Win 8 Store
  • 25. http://www.ekino.com/ @3k1n0 To see or read : • « Slides, quelques démos et vidéos des sessions IE10/HTML5/CSS3 des Techdays 2012 » (fr) David Roussethttp://blogs.msdn.com/b/davrous/archive/2012/02/20/slides-quelques- d-233-mos-et-vid-233-os-des-sessions-ie10-html5-css3-des-techdays-2012.aspx • Keynote « World of developers » including SnapyX demo (fr) MS TechDays 2012 : http://www.youtube.com/watch?v=r64B13fh9nc • Vidéo de présentation de l’application : http://www.youtube.com/watch?v=3winPXeMx_c Frameworks and plugins Used : • Backbone : here • Backbone Relational : here • Backbone Indexed DB • Original : here • Our fork : here • Underscore : here • Pixastic : here • IdbExplorer : here • Raphael Goetter CSS3 presentation : here