SlideShare une entreprise Scribd logo
Développer une SPA pour
tous les devices
Maxime LUCE
Fondateur
Touch it
maxime@touchit.fr
http://touchit.fr
@Touchit_App
Développeurs
Donnez votre avis !
Depuis votre smartphone sur :
http://notes.mstechdays.fr
De nombreux lots à gagner toute les heures !!!
Claviers, souris et jeux Microsoft…
Merci de nous aider à améliorer les Techdays !

#mstechdays

Développeurs
INTRODUCTION
Définition
Caractéristiques
Pourquoi ?
#mstechdays

Développeurs
Définition
« Une application web monopage (en anglais
single-page application ou SPA) est une application
web accessible via une page web unique. Le but
est d'éviter le chargement d'une nouvelle page à
chaque action demandée, et de fluidifier ainsi
l'expérience utilisateur. »

Wikipédia (Application Web Monopage)
#mstechdays

Développeurs
Caractéristiques
• Application web = HTML / CSS / Javascript
• Gestion des états / de l’historique
• Utilisation intensive Ajax
#mstechdays

Développeurs
Cross-Platform Natif
Avantages

Inconvénients

• Performances

• Gestion des compétences

• Look’n’Feel

• Maintenance

• Rapidité du développement

• Technologies propriétaires

#mstechdays

Développeurs
Cross-Platform SPA
Avantages

Inconvénients

• « Un seul code »

• Performances

• Réutilisation des compétences

• Navigateurs

• Adaptabilité

• Debugging

#mstechdays

Développeurs
PRODUCTIVITÉ
Ne pas réinventer la roue
Choisir les bonnes librairies
Automation
#mstechdays

Développeurs
Librairies
• All in One

• Angular
• Backbone

• Spécialisées

• Underscore
• KnockoutJS

• Framework

• Durandal
• SPA Tools

#mstechdays

Développeurs
Automation
• Gestion des dépendances
• Génération
• Test
• Scaffolding
#mstechdays

Développeurs
Yeoman
• Bower
• Grunt
• Generators / Sub Generators
#mstechdays

Développeurs
Language Overlay
• Simplifier le CSS
– LESS
– SCSS

• Améliorer la gestion du javascript
– Typescript
– Coffee Script
– Dart

Attention ! Avoir une bonne vision du code généré
est indispensable.
#mstechdays

Développeurs
YEOMAN
Créer un projet prêt à démarrer
Créer des composants du projet
#mstechdays

Développeurs
ARCHITECTURE
Choisir une architecture adaptée au Javascript et aux SPA
Utiliser des bonnes pratiques / Design Patterns

#mstechdays

Développeurs
Architecture - base
• Modularité
• Separation of Concern
• MV*
• Convention First
#mstechdays

Développeurs
Architecture – Design Patterns
• Performances / Maintenance
• Patterns Javascript recommandés
–
–
–
–
–
–
–
#mstechdays

AMD
Promise
Singleton
Memoization
Factory
Observer
Reuse

http://shichuan.github.io/javascript-patterns/
Développeurs
DESIGN PATTERNS
Démonstration des différents design patterns
avec leur utilité respective
#mstechdays

Développeurs
LIMITES (À CONTOURNER)
Les limites actuelles et comment les contourner

#mstechdays

Développeurs
Limites actuelles
• Taille et Manipulation DOM
• Traitement de grandes quantité de données
• Empreinte mémoire
#mstechdays

Développeurs
Manipulation DOM
• N 1 des causes de mauvaises
performances
• Eviter les grosses manipulations
• Décharger ce qui n’est pas à l’écran
• Charger le DOM à la demande

#mstechdays

Développeurs
Gestion des ressources
• HTML / Style / Javascript
• RequireJS
– Modularité
– Build
– Preprocessing

#mstechdays

Développeurs
Gestion des états (pages)
• Cycle de vie
• Etats principaux / secondaire

#mstechdays

Développeurs
Traitement de grande quantité de données
• Attention aux fuites mémoire
• Ne pas bloquer le thread principal
• Décharger la donnée
#mstechdays

Développeurs
Offline Storage
• Garder la donnée importante pour un accès
rapide
• Evite la surcharge mémoire

• Utiliser des librairies de traitement de données
• Multiple technologies / Failback
#mstechdays

Développeurs
Offline Storage

#mstechdays

Développeurs
LIMITES ET ASTUCES
Cycle de vie
Traitement de longues listes
Stockage hors-ligne
#mstechdays

Développeurs
HYBRIDATION
Transformer sa SPA en application native

#mstechdays

Développeurs
Solutions
• WebView
– Uniquement HTML / Javascript / CSS
– Selon les fonctionnalités attendus cela suffit

• Solutions Hybride
– Apache Cordova
• Adobe PhoneGap
• Intel XDK
• Icenium
#mstechdays

Développeurs
Apache Cordova
• WebView
– Héberge la SPA
– Navigateur par défaut

• Bridge vers code natif
– Accès aux fonctions native du téléphone
– Déléguer des tâches complexes au code natif
#mstechdays

Développeurs
Apache Cordova CLI
•
•
•
•

Prepare
Preview
Build
Deploy

• Toutes les plateformes avec un même outil
• Toutes les plateformes dans un seul
dossier

#mstechdays

Développeurs
Apache Cordova Merges
• Styles (indispensable)
– Personnaliser le rendu / plateforme
– Look’n’Feel Natif

• Scripts
– Preprocessing (compilation conditionnelle)
– Personnaliser les fonctionnalités
#mstechdays

Développeurs
APACHE CORDOVA
Intégrer une SPA dans Cordova
Personnaliser le rendu
#mstechdays

Développeurs
MERCI !

#mstechdays

Développeurs
Annexe 1
• White Sheets
– http://addyosmani.com/resources/essentialjsdesignpatt
erns/book/
– http://developer.yahoo.com/performance/rules.html

• Find info and source
– http://www.html5rocks.com/fr/
– http://microjs.com/
– https://github.com/spatools
#mstechdays

Développeurs
Annexe 2
• Démo
– http://github.com/spatools/techdays2014

• Slides (version courte)
– http://fr.slideshare.net/Touchify/techdays-dvelopper-unesingle-page-application-html5-version-courte

• Slides (version longue)
– http://fr.slideshare.net/Touchify/techdays-dvelopper-unesingle-page-application-html5
#mstechdays

Développeurs
Digital is
business

Contenu connexe

En vedette

Eolfc 2013 marcel laviolette - innovation at the local farm level - french ...
Eolfc 2013   marcel laviolette - innovation at the local farm level - french ...Eolfc 2013   marcel laviolette - innovation at the local farm level - french ...
Eolfc 2013 marcel laviolette - innovation at the local farm level - french ...
Eastern Ontario Local Food Conference
 
A3 distrib jardinage 2015
A3 distrib   jardinage 2015A3 distrib   jardinage 2015
A3 distrib jardinage 2015
Virginie Brunet
 
Table ronde: éco-tourisme : la structuration d'une offre éco-responsable
Table ronde: éco-tourisme : la structuration d'une offre éco-responsableTable ronde: éco-tourisme : la structuration d'une offre éco-responsable
Table ronde: éco-tourisme : la structuration d'une offre éco-responsable
paysdaix
 
EveryonePrint install guide 4.0 FR
EveryonePrint install guide 4.0 FREveryonePrint install guide 4.0 FR
EveryonePrint install guide 4.0 FR
EveryonePrint
 
Brésil. la jeunesse rurale et le «statut de la jeunesse»
Brésil. la jeunesse rurale et le «statut de la jeunesse»Brésil. la jeunesse rurale et le «statut de la jeunesse»
Brésil. la jeunesse rurale et le «statut de la jeunesse»UFPB
 
Business breakfast le management par les valeurs memento
Business breakfast le management par les valeurs   mementoBusiness breakfast le management par les valeurs   memento
Business breakfast le management par les valeurs mementotipsmarketing
 
de 1 à 1 million avec Tsung
de 1 à 1 million avec Tsungde 1 à 1 million avec Tsung
de 1 à 1 million avec Tsung
Rodolphe Quiédeville
 
Soigner en Dordogne-Périgord
Soigner en Dordogne-PérigordSoigner en Dordogne-Périgord
Soigner en Dordogne-PérigordJulie Province
 
#OAW13 week Agnès Henri EDP Sciences 23 octobre 2013
#OAW13 week Agnès Henri EDP Sciences 23 octobre 2013#OAW13 week Agnès Henri EDP Sciences 23 octobre 2013
#OAW13 week Agnès Henri EDP Sciences 23 octobre 2013
MyScienceWork
 
Dp b&c summit
Dp b&c summitDp b&c summit
Dp b&c summit
RAC-F
 
Barometre emploi jobtransport_mars2014
Barometre emploi jobtransport_mars2014Barometre emploi jobtransport_mars2014
Barometre emploi jobtransport_mars2014
emploi
 
ô Catherine
ô Catherineô Catherine
ô Catherinefirstsite
 
Etude sur le marché du logement à Paris depuis 10 ans par l'Adil75
Etude sur le marché du logement à Paris depuis 10 ans par l'Adil75Etude sur le marché du logement à Paris depuis 10 ans par l'Adil75
Etude sur le marché du logement à Paris depuis 10 ans par l'Adil75
Hélène Seloger
 
Les médias sociaux en bibliothèque
Les médias sociaux en bibliothèqueLes médias sociaux en bibliothèque
Les médias sociaux en bibliothèqueRomain_V
 
Avons-nous un rôle à jouer à titre de professionnels dans la question des mod...
Avons-nous un rôle à jouer à titre de professionnels dans la question des mod...Avons-nous un rôle à jouer à titre de professionnels dans la question des mod...
Avons-nous un rôle à jouer à titre de professionnels dans la question des mod...
Daniel Marquis
 
We ❤ dance.powerpoint
We ❤ dance.powerpointWe ❤ dance.powerpoint
We ❤ dance.powerpointAnnagarcia103
 
French project abc final draft
French project abc final draftFrench project abc final draft
French project abc final draftjennifermyers4
 
Mon plat préféré
Mon plat préféré Mon plat préféré
Mon plat préféré Emilio Miró
 
Transats Numériques - Atelier 2 "J'utilise du contenu photovideo en ligne pou...
Transats Numériques - Atelier 2 "J'utilise du contenu photovideo en ligne pou...Transats Numériques - Atelier 2 "J'utilise du contenu photovideo en ligne pou...
Transats Numériques - Atelier 2 "J'utilise du contenu photovideo en ligne pou...
Sophie Dujardin
 

En vedette (20)

Eolfc 2013 marcel laviolette - innovation at the local farm level - french ...
Eolfc 2013   marcel laviolette - innovation at the local farm level - french ...Eolfc 2013   marcel laviolette - innovation at the local farm level - french ...
Eolfc 2013 marcel laviolette - innovation at the local farm level - french ...
 
A3 distrib jardinage 2015
A3 distrib   jardinage 2015A3 distrib   jardinage 2015
A3 distrib jardinage 2015
 
Table ronde: éco-tourisme : la structuration d'une offre éco-responsable
Table ronde: éco-tourisme : la structuration d'une offre éco-responsableTable ronde: éco-tourisme : la structuration d'une offre éco-responsable
Table ronde: éco-tourisme : la structuration d'une offre éco-responsable
 
EveryonePrint install guide 4.0 FR
EveryonePrint install guide 4.0 FREveryonePrint install guide 4.0 FR
EveryonePrint install guide 4.0 FR
 
Brésil. la jeunesse rurale et le «statut de la jeunesse»
Brésil. la jeunesse rurale et le «statut de la jeunesse»Brésil. la jeunesse rurale et le «statut de la jeunesse»
Brésil. la jeunesse rurale et le «statut de la jeunesse»
 
Business breakfast le management par les valeurs memento
Business breakfast le management par les valeurs   mementoBusiness breakfast le management par les valeurs   memento
Business breakfast le management par les valeurs memento
 
Programme 2009 Actidel
Programme 2009 ActidelProgramme 2009 Actidel
Programme 2009 Actidel
 
de 1 à 1 million avec Tsung
de 1 à 1 million avec Tsungde 1 à 1 million avec Tsung
de 1 à 1 million avec Tsung
 
Soigner en Dordogne-Périgord
Soigner en Dordogne-PérigordSoigner en Dordogne-Périgord
Soigner en Dordogne-Périgord
 
#OAW13 week Agnès Henri EDP Sciences 23 octobre 2013
#OAW13 week Agnès Henri EDP Sciences 23 octobre 2013#OAW13 week Agnès Henri EDP Sciences 23 octobre 2013
#OAW13 week Agnès Henri EDP Sciences 23 octobre 2013
 
Dp b&c summit
Dp b&c summitDp b&c summit
Dp b&c summit
 
Barometre emploi jobtransport_mars2014
Barometre emploi jobtransport_mars2014Barometre emploi jobtransport_mars2014
Barometre emploi jobtransport_mars2014
 
ô Catherine
ô Catherineô Catherine
ô Catherine
 
Etude sur le marché du logement à Paris depuis 10 ans par l'Adil75
Etude sur le marché du logement à Paris depuis 10 ans par l'Adil75Etude sur le marché du logement à Paris depuis 10 ans par l'Adil75
Etude sur le marché du logement à Paris depuis 10 ans par l'Adil75
 
Les médias sociaux en bibliothèque
Les médias sociaux en bibliothèqueLes médias sociaux en bibliothèque
Les médias sociaux en bibliothèque
 
Avons-nous un rôle à jouer à titre de professionnels dans la question des mod...
Avons-nous un rôle à jouer à titre de professionnels dans la question des mod...Avons-nous un rôle à jouer à titre de professionnels dans la question des mod...
Avons-nous un rôle à jouer à titre de professionnels dans la question des mod...
 
We ❤ dance.powerpoint
We ❤ dance.powerpointWe ❤ dance.powerpoint
We ❤ dance.powerpoint
 
French project abc final draft
French project abc final draftFrench project abc final draft
French project abc final draft
 
Mon plat préféré
Mon plat préféré Mon plat préféré
Mon plat préféré
 
Transats Numériques - Atelier 2 "J'utilise du contenu photovideo en ligne pou...
Transats Numériques - Atelier 2 "J'utilise du contenu photovideo en ligne pou...Transats Numériques - Atelier 2 "J'utilise du contenu photovideo en ligne pou...
Transats Numériques - Atelier 2 "J'utilise du contenu photovideo en ligne pou...
 

Similaire à TechDays - Développer une single page application HTML5 - Version courte

10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
Microsoft
 
Optimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSOptimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJS
Microsoft
 
Tout sur les SPA
Tout sur les SPATout sur les SPA
Tout sur les SPA
Microsoft
 
Introduction au développement Windows 8.1
Introduction au développement Windows 8.1Introduction au développement Windows 8.1
Introduction au développement Windows 8.1
Microsoft
 
Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Compatibilité Internet Explorer : pour le meilleur et pour le pire!Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Microsoft
 
Deep Dive WinJS – Profitez à 100% de son potentiel
Deep Dive WinJS – Profitez à 100% de son potentielDeep Dive WinJS – Profitez à 100% de son potentiel
Deep Dive WinJS – Profitez à 100% de son potentiel
Microsoft
 
Formation mobile-cross-platform
Formation mobile-cross-platformFormation mobile-cross-platform
Formation mobile-cross-platform
Atelier IHM Polytech Nice Sophia
 
Les nouveautés d’HTML5 et IE11 en action
Les nouveautés d’HTML5 et IE11 en actionLes nouveautés d’HTML5 et IE11 en action
Les nouveautés d’HTML5 et IE11 en action
Microsoft
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
ekino
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
présentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdfprésentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdf
ghiz-
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
davrous
 
Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...
Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...
Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...
Microsoft
 
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
Microsoft
 
20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala
Éric Viala
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
davrous
 
Kit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des EntrepreneursKit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des Entrepreneurs
Stéphanie Hertrich
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to market
michael_bailly
 
Vers des applications modernes : retour d'expérience
Vers des applications modernes : retour d'expérienceVers des applications modernes : retour d'expérience
Vers des applications modernes : retour d'expérience
Microsoft
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
Microsoft
 

Similaire à TechDays - Développer une single page application HTML5 - Version courte (20)

10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
Optimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSOptimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJS
 
Tout sur les SPA
Tout sur les SPATout sur les SPA
Tout sur les SPA
 
Introduction au développement Windows 8.1
Introduction au développement Windows 8.1Introduction au développement Windows 8.1
Introduction au développement Windows 8.1
 
Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Compatibilité Internet Explorer : pour le meilleur et pour le pire!Compatibilité Internet Explorer : pour le meilleur et pour le pire!
Compatibilité Internet Explorer : pour le meilleur et pour le pire!
 
Deep Dive WinJS – Profitez à 100% de son potentiel
Deep Dive WinJS – Profitez à 100% de son potentielDeep Dive WinJS – Profitez à 100% de son potentiel
Deep Dive WinJS – Profitez à 100% de son potentiel
 
Formation mobile-cross-platform
Formation mobile-cross-platformFormation mobile-cross-platform
Formation mobile-cross-platform
 
Les nouveautés d’HTML5 et IE11 en action
Les nouveautés d’HTML5 et IE11 en actionLes nouveautés d’HTML5 et IE11 en action
Les nouveautés d’HTML5 et IE11 en action
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
présentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdfprésentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdf
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...
Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...
Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...
 
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
 
20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
Kit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des EntrepreneursKit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des Entrepreneurs
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to market
 
Vers des applications modernes : retour d'expérience
Vers des applications modernes : retour d'expérienceVers des applications modernes : retour d'expérience
Vers des applications modernes : retour d'expérience
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 

TechDays - Développer une single page application HTML5 - Version courte

  • 1.
  • 2. Développer une SPA pour tous les devices Maxime LUCE Fondateur Touch it maxime@touchit.fr http://touchit.fr @Touchit_App Développeurs
  • 3. Donnez votre avis ! Depuis votre smartphone sur : http://notes.mstechdays.fr De nombreux lots à gagner toute les heures !!! Claviers, souris et jeux Microsoft… Merci de nous aider à améliorer les Techdays ! #mstechdays Développeurs
  • 5. Définition « Une application web monopage (en anglais single-page application ou SPA) est une application web accessible via une page web unique. Le but est d'éviter le chargement d'une nouvelle page à chaque action demandée, et de fluidifier ainsi l'expérience utilisateur. » Wikipédia (Application Web Monopage) #mstechdays Développeurs
  • 6. Caractéristiques • Application web = HTML / CSS / Javascript • Gestion des états / de l’historique • Utilisation intensive Ajax #mstechdays Développeurs
  • 7. Cross-Platform Natif Avantages Inconvénients • Performances • Gestion des compétences • Look’n’Feel • Maintenance • Rapidité du développement • Technologies propriétaires #mstechdays Développeurs
  • 8. Cross-Platform SPA Avantages Inconvénients • « Un seul code » • Performances • Réutilisation des compétences • Navigateurs • Adaptabilité • Debugging #mstechdays Développeurs
  • 9. PRODUCTIVITÉ Ne pas réinventer la roue Choisir les bonnes librairies Automation #mstechdays Développeurs
  • 10. Librairies • All in One • Angular • Backbone • Spécialisées • Underscore • KnockoutJS • Framework • Durandal • SPA Tools #mstechdays Développeurs
  • 11. Automation • Gestion des dépendances • Génération • Test • Scaffolding #mstechdays Développeurs
  • 12. Yeoman • Bower • Grunt • Generators / Sub Generators #mstechdays Développeurs
  • 13. Language Overlay • Simplifier le CSS – LESS – SCSS • Améliorer la gestion du javascript – Typescript – Coffee Script – Dart Attention ! Avoir une bonne vision du code généré est indispensable. #mstechdays Développeurs
  • 14. YEOMAN Créer un projet prêt à démarrer Créer des composants du projet #mstechdays Développeurs
  • 15. ARCHITECTURE Choisir une architecture adaptée au Javascript et aux SPA Utiliser des bonnes pratiques / Design Patterns #mstechdays Développeurs
  • 16. Architecture - base • Modularité • Separation of Concern • MV* • Convention First #mstechdays Développeurs
  • 17. Architecture – Design Patterns • Performances / Maintenance • Patterns Javascript recommandés – – – – – – – #mstechdays AMD Promise Singleton Memoization Factory Observer Reuse http://shichuan.github.io/javascript-patterns/ Développeurs
  • 18. DESIGN PATTERNS Démonstration des différents design patterns avec leur utilité respective #mstechdays Développeurs
  • 19. LIMITES (À CONTOURNER) Les limites actuelles et comment les contourner #mstechdays Développeurs
  • 20. Limites actuelles • Taille et Manipulation DOM • Traitement de grandes quantité de données • Empreinte mémoire #mstechdays Développeurs
  • 21. Manipulation DOM • N 1 des causes de mauvaises performances • Eviter les grosses manipulations • Décharger ce qui n’est pas à l’écran • Charger le DOM à la demande #mstechdays Développeurs
  • 22. Gestion des ressources • HTML / Style / Javascript • RequireJS – Modularité – Build – Preprocessing #mstechdays Développeurs
  • 23. Gestion des états (pages) • Cycle de vie • Etats principaux / secondaire #mstechdays Développeurs
  • 24. Traitement de grande quantité de données • Attention aux fuites mémoire • Ne pas bloquer le thread principal • Décharger la donnée #mstechdays Développeurs
  • 25. Offline Storage • Garder la donnée importante pour un accès rapide • Evite la surcharge mémoire • Utiliser des librairies de traitement de données • Multiple technologies / Failback #mstechdays Développeurs
  • 27. LIMITES ET ASTUCES Cycle de vie Traitement de longues listes Stockage hors-ligne #mstechdays Développeurs
  • 28. HYBRIDATION Transformer sa SPA en application native #mstechdays Développeurs
  • 29. Solutions • WebView – Uniquement HTML / Javascript / CSS – Selon les fonctionnalités attendus cela suffit • Solutions Hybride – Apache Cordova • Adobe PhoneGap • Intel XDK • Icenium #mstechdays Développeurs
  • 30. Apache Cordova • WebView – Héberge la SPA – Navigateur par défaut • Bridge vers code natif – Accès aux fonctions native du téléphone – Déléguer des tâches complexes au code natif #mstechdays Développeurs
  • 31. Apache Cordova CLI • • • • Prepare Preview Build Deploy • Toutes les plateformes avec un même outil • Toutes les plateformes dans un seul dossier #mstechdays Développeurs
  • 32. Apache Cordova Merges • Styles (indispensable) – Personnaliser le rendu / plateforme – Look’n’Feel Natif • Scripts – Preprocessing (compilation conditionnelle) – Personnaliser les fonctionnalités #mstechdays Développeurs
  • 33. APACHE CORDOVA Intégrer une SPA dans Cordova Personnaliser le rendu #mstechdays Développeurs
  • 35. Annexe 1 • White Sheets – http://addyosmani.com/resources/essentialjsdesignpatt erns/book/ – http://developer.yahoo.com/performance/rules.html • Find info and source – http://www.html5rocks.com/fr/ – http://microjs.com/ – https://github.com/spatools #mstechdays Développeurs
  • 36. Annexe 2 • Démo – http://github.com/spatools/techdays2014 • Slides (version courte) – http://fr.slideshare.net/Touchify/techdays-dvelopper-unesingle-page-application-html5-version-courte • Slides (version longue) – http://fr.slideshare.net/Touchify/techdays-dvelopper-unesingle-page-application-html5 #mstechdays Développeurs

Notes de l'éditeur

  1. Qui dans la salle a déjà développé des SPA ?Oui  On passe vite jusqu’au slide 9Non  Vitesse normale
  2. Application web dans une seule pageAucun rechargementExpérience utilisateur plus fluideSensation d’utiliser un application pour l’utilisateurHTML / CSS / JavascriptUniquement des technologies web pour le frontLiberté technologique pour le backRester RESTfulGestion des états :Etats fondamentauxNavigation principaleChangement du contenu principalEtats secondairesAJAHAJAXGestion de l’historique :Autoriser la navigation en utilisant le javascriptCycle de vie des pagesGestion du hash de l’urlPrécédent / Suivant_escaped_fragment_AJAX :RESTCORSStockage Offline
  3. Performances Code compiléAdaptée à la plateformeLook’n’FeelStyle automatiqueContrôles spécifiquesRapidité du développementOutils spécialisésLibrairies adaptéesMaintenance / Gestion des compétencesUn code par plateformeTechnologies propriétairesPeu de contrôle sur le renduQue se passe-t-il quand ça ne marche pas ?
  4. Un seul codeMarche dans le navigateurS’intègre dans la WebViewFacilite la maintenanceAttention ! Cross-Platform = Cross-BrowserNe pas tester sur un seul navigateur (surprises à l’arrivé)Réutilisation des compétencesMême compétences pour toutes les plateformesJavascript / HTML / CSS connu de tousAttention ! Pas pareil non plus !AdaptabilitéLejavascript est extrêmement modulablePossibilité d’adapter l’application à la plateforme cibléePerformancesJavascriptOne ThreadArchitectureNavigateursChaque navigateurs est différentCross Platform is Cross BrowserSEO / AdsDebuggingRemotedebuggingParfois complexe à mettre en place
  5. Ne pas réinventer la roueChoisir des librairies adaptées à ses besoins.Peu de documentation != Peu de solutionsEviter les usines à gazAll in OneSimplifie le démarrage de l’applicationEnfermé dans la logique de la librairieLibrairies spécialiséesUne librairie pour un besoin précisDes librairies plus petitesAttention ! Multiplier les librairies qui accomplissent des tâches similairesExemple : jQuery + PrototypeAugmente l’empreinte mémoire pour rienRisque d’utiliser les deux dans le code (très difficile à maintenir)Attention ! Ne pas maîtriser le résultat des librairies utiliséesExemple : jQuery MobileConcept bloquantUn problème de librairie est quasiment incorrigibleHybrideRéutilise plusieurs librairiesOrganise le code
  6. Ne pas tout faire manuellement.Utiliser des outils pour augmenter la productivitéGestion des dépendancesNe jamais gérer ses dépendances manuellementSimplifie la maintenance des dépendancesNuGetVisual StudioWindowsBowerNode.jsSpécialisé webGénérationRequire.jsUglify2ClosureTestPhantomJSqUnitPhantomJSScaffoldingSimplifier le démarrage et la maintenance d'une application Automatiser la création de composant d'applicationYeomanGrunt JSGestionnaire de tâches d’automationServer avec livereloadingTestPhantomJSqUnitPhantomJSBuildPreprocessingÉquivalent de la précompilationExemple
  7. GruntGestionnaire de tâches d’automationServer avec livereloadingBuild / TestYeomanGénérateur de projetGénérateur de composant de projetPermet de partir en utilisant de bonnes pratiques et les assurer dans le temps
  8. Tags: 0.1.0 Initialization par le générateur Durandal de Yeoman0.1.1  Ajout d’un ViewModel en utilisant un sous-générateur Yeoman0.1.2  Démo LiveReview
  9. Langage dynamique non typéFacile de faire n’importe quoiFacilement modulableModularité Code Spaghetti vs Code RavioliUn module = Une fonction préciseModule principalSous-moduleMV*MVVMMVWMVPConventions vs ConfigurationJavascript love conventionsConfigurations est une étape supplémentaire à interprété
  10. Très important pour garder une application maintenable dans le tempsPermet d’adopter un schéma stricte et performant
  11. Tags:0.2.0  Préparation de la démo0.2.1  Ajout des exemples
  12. Taille et Manipulation du DOMN°1 de la cause de mauvaise performance selon jsperf.comImpose une réelle gestion du DOMTraitementEviter de bloquer le thread principalPrivilégier la délégationEmpreinte mémoireDécharger la données inutileDécharger le DOM
  13. Le DOM est la manipulation la moins performante du HTML5 et Javascript.Minimiser sa charge en traitant des petites quantités d’informations.N°1 de la cause de mauvaise performance selon jsperf.comManipulation de grande quantitéNe jamais manipuler ni laisser de grande quantité d’élément dans le DOMEnormément de DOM généré en même temps = CRRRRRRRRChainer le chargement (10 puis 10 puis 10…)Infinite List LoadingChargement de la suite de la liste lorsque le scroll arrive à la fin.Selon la taille, décharger le début de la listeDéchargerConcepts des jeux vidéosMettre en cache le DOM qui est souvent réutiliséCharger le DOM à la demandeNe jamaisprécharger tout le DOM de votre application (non scalable)ExternalTemplatingRequire.JS Text Plugin
  14. 2 choixPré-charger toutes les ressources au démarrage (Full-Load)Charger les ressources dynamiquement (DynamicLoad)Si vous souhaitez une SPA scalable, éviter le full loading.RequireJSGère les dépendances modulairePlugin Text pour HTMLPlugin CSS pour CSS (https://github.com/guybedford/require-css)Plugin Preloader pour Image (https://github.com/millermedeiros/requirejs-plugins)
  15. Cycle de vie :Activation => ChargementDésactivation => Déchargement (si possible)Etats principaux / secondairePrincipal = page / navigationSecondaire = bloc / sous-partie / réaction (affichage d’erreur, message de confirmation…)Principal gère secondaireSecondaire peut être un module à part entière avec son cycle de vie
  16. Le javascript n’aime pas les grosses listes d’objetsFuites mémoireDécharger les objets de tous les SingletonDétacher les objets non-Singleton pouvant contenir des entitésTraitementsetTimeout + chainingWebWorkersDécharger la donnéeEviter de conserver la données en mémoireStocker en cache la données inutile à l’instant T
  17. Pourquoi stocker les données de manière hors-ligne ?Quelle solution utilisée ?Donnée importanteAu démarrage de l’applicationEviter des chargementSurchargeEmpreinte mémoireStocke grande liste puis traite par blocEvite de charger vos tableaux / dictionnaires d’objet.Stocke les données non utiles à l’instant T.Librairies de traitement de donnéesAmplifyJSBreezeSPA ToolsMultiple technologiesDans l’ordre de traitementIndexedDBWebSQLLocalStorageCookie (Wow !! Optionel)Cet ordre d’exécution est établi en fonction des :Spécifications du W3CPerformancesMaintenabilitéIndexedDB => LocalStorage (shim pour WebSQL)
  18. Tags :0.3.0  Préparation de la démo0.3.1  Présentations des exemples
  19. Spécifiques par plateformeRemplace les fichiers de votre code pour une plateforme spécifiqueStylesScriptsPreprocessingcompilation conditionnellePermet d’exécuter du code sur une plateforme spécifique ou dans un état spécifiqueUtiliser des fonctions systèmes uniquement accessible sur une plateforme
  20. Tags :0.4.0  Initialisation du projectCordova0.4.1  Ajout du préprocessing pour Cordova0.4.2  Ajout du préprocessing pour Window80.4.3  Intégration poussée