SlideShare une entreprise Scribd logo
1  sur  13
1 
Accélérez le 
développement de vos 
interfaces web 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval
2 
Constats sur le développement 
d’interfaces web dynamiques 
• Assez répétitif: 
– Validation et soumissions de formulaire 
– Affichages de tableaux dynamiques 
– Boites de dialogues 
• Frameworks devenant des standards 
de facto: 
– jQuery pour le JavaScript 
– Bootstrap pour le CSS 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval
3 
Pratiques pour insérer du 
JavaScript dans une page HTML 
• Inline 
<a href='uneurl' onclick='javascript:return confirm("Etes vous sur ? ") '> 
cliquez ici 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval 
</a> 
• Avantage: gestion fine des évènements 
• Inconvénients: 
• Code pas très lisible: 
mélange HTML / Javascript difficilement maintenable 
• Alourdit le poids des pages car chaque élément doit posséder le script 
• Code non réutilisable 
• JavaScript non compressible et non mis en cache 
• Pas de gestion si JavaScript est désactivé
4 
Pratiques pour insérer du 
JavaScript dans une page HTML 
• Non-inline 
Avec jQuery: 
<a href='uneurl' id='id1'>cliquez ici</a> 
<script> 
(function($){ 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval 
$(function(){ 
$("#id1").on("click" , function(e){ 
if(! confirm("Etes vous sur ? ")){ 
e.preventDefault(); 
} 
}); 
}); 
})(jQuery); 
</script>
5 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval 
• Avantage: 
• Plus grande lisibilité et maintenabilité du code 
• Gestion fine des évènements 
• Inconvénients: 
• Code long à écrire 
• Code non réutilisable 
• JavaScript non compressible et non mis en cache (sauf si 
passage par un fichier de script spécifique par page).
6 
Solution proposée 
• 1 fichier de script global passant par l’utilisation d’éléments HTML 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval 
standardisés 
 Equivalent à ce que fait Bootstrap pour le CSS 
 Ex: <span class="col-md-3">…</span> 
• Avantages: 
– Pas de réécriture de code inutile 
– Allégement des pages 
– Possibilité de mettre en cache 
– Maintenabilité extrêmement simple 
• Scan des éléments possédant une certaine classe CSS après le 
chargement de la page (ou la création dynamique d’éléments 
HTML) et création de composants en fonction des données de ces 
éléments
7 
Dans la page 
<a href="uneurl" class="confirmation-link" >cliquez ici</a> 
Dans le script 
$.fn.refresh = function(){ 
$(this).find(".confirmation-link").on("click", function(e){ 
if(! confirm("Etes vous sur ? ")){ 
e.preventDefault(); 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval 
} 
}); 
}
8 
Inconvénient majeur: la 
personnalisation 
• Il n’est pas possible avec de simples 
classes CSS de personnaliser le 
contenu ou le comportement des 
composants 
– Ex: comment changer la phrase « êtes 
vous sûr ? » des exemples précédents ? 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval
9 
HTML 5 à la rescousse 
• Arrivée des attributs data-* permettant de mettre n’importe quel 
contenu texte dans une balise sans rendre le HTML non valide 
Dans la page 
<a href="uneurl" data-confirm="Etes vous vraiment sûr ?" 
class="confirmation-link" >cliquez ici</a> 
Dans le script 
$.fn.refreshComponents = function(){ 
$(this).find(".confirmation-link").each(function(){ 
$(this).on("click", function(e){ 
if(! confirm($(this).data("confirm")){ 
e.preventDefault(); 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval 
} 
}); 
}); 
}
10 
Cas des formulaires 
• Dans 90% des cas la gestion d’un formulaire se résume à : 
1. Vérifier les entrées utilisateur du côté navigateur et si elles sont 
incorrectes bloquer l’envoi 
2. Vérifier les entrées utilisateur du côté serveur et si elles sont 
incorrectes renvoyer une liste d’erreurs au navigateur 
3. Effectuer un traitement côté serveur 
4. Demander au navigateur d’effectuer une action en cas de succès 
(redirection vers une url, affichage d’un message de succès, insertion 
d’une ligne dans un tableau…) 
• En appliquant une standardisation du résultat renvoyé par le 
serveur et l’utilisation des attributs data-* il est très facile 
de gérer cela automatiquement sans une ligne de script 
spécifique 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval
11 
Exemple de gestion des formulaires 
Structure JSON renvoyée par le serveur 
{ 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval 
Success: bool, 
ErrorMessages: array, 
Data: object 
} 
Code HTML 
<form class="auto-form" action="uneurl" method="post" 
data-success="votre demande a été envoyée avec succès"> 
<div class="summary"> 
</div> 
<div> 
<label for="email">Votre email</label> 
<input type="email" name="email"/> 
</div> 
<button type="submit">Valider</button> 
</form>
12 
Code JavaScript (incomplet) 
$.fn.refreshComponents = function(){ 
$(this).find(".auto-form").each(function(){ 
$(this).on("submit", function (e) { 
e.preventDefault(); 
var form = $(this); 
form.find(".validation-summary-success").removeClass("alert"); 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval 
form.ajaxSubmit({ 
dataType: 'json', 
type: form.attr("method") || "POST", 
success: function (data) { 
if (data.Success) { 
alert(form.data("success")); 
} 
else { 
form.displayErrors(data.Messages, error); 
} 
} 
}); 
}); 
}); 
}
13 
Applications possibles 
• Lien chargeant un dialogue Ajax 
• Auto-validation de formulaire Personnalisation automatique de 
contrôles (ex: ajout automatique de datepicker sur les contrôles de 
type date) 
• Tableau dynamiques 
• Sélecteurs d’images 
• Boutons de suppression avec confirmation 
• Autocomplete 
• … 
Grégoire Larreur de Farcy 
Human Talks du 18/11/2014 à Laval

Contenu connexe

Tendances

HTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueHTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueJean-Pierre Vincent
 
Référencement avancé de WordPress : structure en silos et maillage interne
Référencement avancé de WordPress : structure en silos et maillage interneRéférencement avancé de WordPress : structure en silos et maillage interne
Référencement avancé de WordPress : structure en silos et maillage interneDaniel Roch - SeoMix
 
Amélioration des performances eCommerce - Webinaire par aYaline
Amélioration des performances eCommerce - Webinaire par aYalineAmélioration des performances eCommerce - Webinaire par aYaline
Amélioration des performances eCommerce - Webinaire par aYalineaYaline
 
Comprendre et optimiser la base de données WordPress
Comprendre et optimiser la base de données WordPressComprendre et optimiser la base de données WordPress
Comprendre et optimiser la base de données WordPressTony Archambeau
 
Deboguer Avec Firephp
Deboguer Avec FirephpDeboguer Avec Firephp
Deboguer Avec FirephpDamien Seguy
 
Déboguer une application web avec FirePHP
Déboguer une application web avec FirePHPDéboguer une application web avec FirePHP
Déboguer une application web avec FirePHPJean-Marc Fontaine
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performanteJean-Pierre Vincent
 
Wordpress et SEO - Campus Made in Blog 2014 Montréal
Wordpress et SEO - Campus Made in Blog 2014 MontréalWordpress et SEO - Campus Made in Blog 2014 Montréal
Wordpress et SEO - Campus Made in Blog 2014 MontréalMade in
 
Initiation Webperf : Comprendre, analyser et optimiser les performances web F...
Initiation Webperf : Comprendre, analyser et optimiser les performances web F...Initiation Webperf : Comprendre, analyser et optimiser les performances web F...
Initiation Webperf : Comprendre, analyser et optimiser les performances web F...Kenny Dits
 
Web performance - appliquer les règles de base
Web performance - appliquer les règles de baseWeb performance - appliquer les règles de base
Web performance - appliquer les règles de baseJonathan Buttigieg
 
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir..."Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...Boris SCHAPIRA
 
Les clés pour réussir son site WordPress - SeoMix au WordCamp Paris 2016
Les clés pour réussir son site WordPress - SeoMix au WordCamp Paris 2016Les clés pour réussir son site WordPress - SeoMix au WordCamp Paris 2016
Les clés pour réussir son site WordPress - SeoMix au WordCamp Paris 2016Daniel Roch - SeoMix
 
Wordcamp paris 2015 dev-pragmatique-bonnes-pratiques
Wordcamp paris 2015  dev-pragmatique-bonnes-pratiquesWordcamp paris 2015  dev-pragmatique-bonnes-pratiques
Wordcamp paris 2015 dev-pragmatique-bonnes-pratiquesSylvie Clément
 
Introduction à la performance web
Introduction à la performance webIntroduction à la performance web
Introduction à la performance webRaphaël Goetter
 
Optimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPressOptimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPressDaniel Roch - SeoMix
 
Le référencement naturel de cas complexes sur WordPress
Le référencement naturel de cas complexes sur WordPressLe référencement naturel de cas complexes sur WordPress
Le référencement naturel de cas complexes sur WordPressDaniel Roch - SeoMix
 
HTML5 maintenant partie 2 : APIs
HTML5 maintenant partie 2 : APIsHTML5 maintenant partie 2 : APIs
HTML5 maintenant partie 2 : APIsJean-Pierre Vincent
 

Tendances (20)

WordPress + HTTPS
WordPress + HTTPSWordPress + HTTPS
WordPress + HTTPS
 
HTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueHTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantique
 
Référencement avancé de WordPress : structure en silos et maillage interne
Référencement avancé de WordPress : structure en silos et maillage interneRéférencement avancé de WordPress : structure en silos et maillage interne
Référencement avancé de WordPress : structure en silos et maillage interne
 
WordPress et Ninja forms
WordPress et Ninja formsWordPress et Ninja forms
WordPress et Ninja forms
 
Amélioration des performances eCommerce - Webinaire par aYaline
Amélioration des performances eCommerce - Webinaire par aYalineAmélioration des performances eCommerce - Webinaire par aYaline
Amélioration des performances eCommerce - Webinaire par aYaline
 
Comprendre et optimiser la base de données WordPress
Comprendre et optimiser la base de données WordPressComprendre et optimiser la base de données WordPress
Comprendre et optimiser la base de données WordPress
 
Deboguer Avec Firephp
Deboguer Avec FirephpDeboguer Avec Firephp
Deboguer Avec Firephp
 
Déboguer une application web avec FirePHP
Déboguer une application web avec FirePHPDéboguer une application web avec FirePHP
Déboguer une application web avec FirePHP
 
Jquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter BootstrapJquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter Bootstrap
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performante
 
Wordpress et SEO - Campus Made in Blog 2014 Montréal
Wordpress et SEO - Campus Made in Blog 2014 MontréalWordpress et SEO - Campus Made in Blog 2014 Montréal
Wordpress et SEO - Campus Made in Blog 2014 Montréal
 
Initiation Webperf : Comprendre, analyser et optimiser les performances web F...
Initiation Webperf : Comprendre, analyser et optimiser les performances web F...Initiation Webperf : Comprendre, analyser et optimiser les performances web F...
Initiation Webperf : Comprendre, analyser et optimiser les performances web F...
 
Web performance - appliquer les règles de base
Web performance - appliquer les règles de baseWeb performance - appliquer les règles de base
Web performance - appliquer les règles de base
 
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir..."Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
"Performance Web : vers la Speed Update, un pas après l’autre", Boris Schapir...
 
Les clés pour réussir son site WordPress - SeoMix au WordCamp Paris 2016
Les clés pour réussir son site WordPress - SeoMix au WordCamp Paris 2016Les clés pour réussir son site WordPress - SeoMix au WordCamp Paris 2016
Les clés pour réussir son site WordPress - SeoMix au WordCamp Paris 2016
 
Wordcamp paris 2015 dev-pragmatique-bonnes-pratiques
Wordcamp paris 2015  dev-pragmatique-bonnes-pratiquesWordcamp paris 2015  dev-pragmatique-bonnes-pratiques
Wordcamp paris 2015 dev-pragmatique-bonnes-pratiques
 
Introduction à la performance web
Introduction à la performance webIntroduction à la performance web
Introduction à la performance web
 
Optimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPressOptimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPress
 
Le référencement naturel de cas complexes sur WordPress
Le référencement naturel de cas complexes sur WordPressLe référencement naturel de cas complexes sur WordPress
Le référencement naturel de cas complexes sur WordPress
 
HTML5 maintenant partie 2 : APIs
HTML5 maintenant partie 2 : APIsHTML5 maintenant partie 2 : APIs
HTML5 maintenant partie 2 : APIs
 

En vedette

12. Haddad, effets de la gratuité sur le recours aux soins
12. Haddad, effets de la gratuité sur le recours aux soins12. Haddad, effets de la gratuité sur le recours aux soins
12. Haddad, effets de la gratuité sur le recours aux soinssantepub
 
Lire en vendée 27 decembre2013
Lire en vendée 27 decembre2013Lire en vendée 27 decembre2013
Lire en vendée 27 decembre2013ecrivains-vendee
 
Etude aides publiques Ernst&Young
Etude aides publiques Ernst&YoungEtude aides publiques Ernst&Young
Etude aides publiques Ernst&Youngechosentrepreneurs
 
Una Aproximación al Uso Profesional de la Social Media por los médicos
Una Aproximación al Uso Profesional de la Social Media por los médicos Una Aproximación al Uso Profesional de la Social Media por los médicos
Una Aproximación al Uso Profesional de la Social Media por los médicos Carlo V Caballero Uribe MD
 
Medias num-2013
Medias num-2013Medias num-2013
Medias num-2013cddp46
 
2015 ea offre-emploi-project-manager
2015 ea offre-emploi-project-manager2015 ea offre-emploi-project-manager
2015 ea offre-emploi-project-managerEventattitude
 
Le web semantique_2013_2014
Le web semantique_2013_2014Le web semantique_2013_2014
Le web semantique_2013_2014Serge Garlatti
 
Les verbes au présent de l'indicatif par silvia
Les verbes au présent de l'indicatif par silviaLes verbes au présent de l'indicatif par silvia
Les verbes au présent de l'indicatif par silviaNanettelp
 
Atelier E16 Du Monitoring à la gestion positive de votre E-réputation
Atelier E16 Du Monitoring à la gestion positive de votre E-réputationAtelier E16 Du Monitoring à la gestion positive de votre E-réputation
Atelier E16 Du Monitoring à la gestion positive de votre E-réputationSalon e-tourisme #VeM
 
2010 Ontario Municipal Election Resource for Student Vote - French
2010 Ontario Municipal Election Resource for Student Vote - French2010 Ontario Municipal Election Resource for Student Vote - French
2010 Ontario Municipal Election Resource for Student Vote - Frenchjeremysandor
 
Saint-Louis programme culturel
Saint-Louis programme culturelSaint-Louis programme culturel
Saint-Louis programme culturelBâle Région Mag
 
Arnau- Jordi
Arnau- JordiArnau- Jordi
Arnau- Jordicipauvila
 
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerceFACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerceChristophe Favresse
 
Diseño de Interfases - Teorías básicas
Diseño de Interfases - Teorías básicasDiseño de Interfases - Teorías básicas
Diseño de Interfases - Teorías básicasLuis Palomino
 
Présentation Skydrive TD10
Présentation Skydrive TD10Présentation Skydrive TD10
Présentation Skydrive TD10Emilie Doussin
 
Les musées dans les réseaux, usages, stratégies, limites
Les musées dans les réseaux, usages, stratégies, limitesLes musées dans les réseaux, usages, stratégies, limites
Les musées dans les réseaux, usages, stratégies, limitesmériam bensassi
 
Participation du CFI au 4L TROPHY
Participation du CFI au 4L TROPHYParticipation du CFI au 4L TROPHY
Participation du CFI au 4L TROPHYCFI-formations
 
Le cloud en toute confiance
Le cloud en toute confianceLe cloud en toute confiance
Le cloud en toute confianceIkoula
 

En vedette (20)

12. Haddad, effets de la gratuité sur le recours aux soins
12. Haddad, effets de la gratuité sur le recours aux soins12. Haddad, effets de la gratuité sur le recours aux soins
12. Haddad, effets de la gratuité sur le recours aux soins
 
Presentación ccss
Presentación ccssPresentación ccss
Presentación ccss
 
Lire en vendée 27 decembre2013
Lire en vendée 27 decembre2013Lire en vendée 27 decembre2013
Lire en vendée 27 decembre2013
 
Etude aides publiques Ernst&Young
Etude aides publiques Ernst&YoungEtude aides publiques Ernst&Young
Etude aides publiques Ernst&Young
 
Una Aproximación al Uso Profesional de la Social Media por los médicos
Una Aproximación al Uso Profesional de la Social Media por los médicos Una Aproximación al Uso Profesional de la Social Media por los médicos
Una Aproximación al Uso Profesional de la Social Media por los médicos
 
Medias num-2013
Medias num-2013Medias num-2013
Medias num-2013
 
2015 ea offre-emploi-project-manager
2015 ea offre-emploi-project-manager2015 ea offre-emploi-project-manager
2015 ea offre-emploi-project-manager
 
Le web semantique_2013_2014
Le web semantique_2013_2014Le web semantique_2013_2014
Le web semantique_2013_2014
 
Les verbes au présent de l'indicatif par silvia
Les verbes au présent de l'indicatif par silviaLes verbes au présent de l'indicatif par silvia
Les verbes au présent de l'indicatif par silvia
 
Atelier E16 Du Monitoring à la gestion positive de votre E-réputation
Atelier E16 Du Monitoring à la gestion positive de votre E-réputationAtelier E16 Du Monitoring à la gestion positive de votre E-réputation
Atelier E16 Du Monitoring à la gestion positive de votre E-réputation
 
2010 Ontario Municipal Election Resource for Student Vote - French
2010 Ontario Municipal Election Resource for Student Vote - French2010 Ontario Municipal Election Resource for Student Vote - French
2010 Ontario Municipal Election Resource for Student Vote - French
 
Saint-Louis programme culturel
Saint-Louis programme culturelSaint-Louis programme culturel
Saint-Louis programme culturel
 
Arnau- Jordi
Arnau- JordiArnau- Jordi
Arnau- Jordi
 
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerceFACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
 
Diseño de Interfases - Teorías básicas
Diseño de Interfases - Teorías básicasDiseño de Interfases - Teorías básicas
Diseño de Interfases - Teorías básicas
 
Présentation Skydrive TD10
Présentation Skydrive TD10Présentation Skydrive TD10
Présentation Skydrive TD10
 
Les musées dans les réseaux, usages, stratégies, limites
Les musées dans les réseaux, usages, stratégies, limitesLes musées dans les réseaux, usages, stratégies, limites
Les musées dans les réseaux, usages, stratégies, limites
 
Participation du CFI au 4L TROPHY
Participation du CFI au 4L TROPHYParticipation du CFI au 4L TROPHY
Participation du CFI au 4L TROPHY
 
Les cellules
Les cellulesLes cellules
Les cellules
 
Le cloud en toute confiance
Le cloud en toute confianceLe cloud en toute confiance
Le cloud en toute confiance
 

Similaire à Accélérez le développement de vos interfaces web

HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
Développement Web - HTML5, CSS3, APIs Web
Développement Web - HTML5, CSS3, APIs WebDéveloppement Web - HTML5, CSS3, APIs Web
Développement Web - HTML5, CSS3, APIs WebYoann Gotthilf
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopFrédéric Harper
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web componentsFrancois ANDRE
 
Création d’une application gérant l’offline et le stockage
Création d’une application gérant l’offline et le stockageCréation d’une application gérant l’offline et le stockage
Création d’une application gérant l’offline et le stockagedavrous
 
USI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SIUSI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SIDjamel Zouaoui
 
Le Web comme plateforme applicative - comment programme-t-on le Web?
Le Web comme plateforme applicative - comment programme-t-on le Web?Le Web comme plateforme applicative - comment programme-t-on le Web?
Le Web comme plateforme applicative - comment programme-t-on le Web?Francois Daoust
 
Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)LeTesteur
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Componentscjolif
 
Le SEO JavaScript démystifié
Le SEO JavaScript démystifiéLe SEO JavaScript démystifié
Le SEO JavaScript démystifiéAdrien Russo
 
CV_Youssouph_BARRY_DRUPAL
CV_Youssouph_BARRY_DRUPALCV_Youssouph_BARRY_DRUPAL
CV_Youssouph_BARRY_DRUPALYoussouph Barry
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
Panel de solutions javascript
Panel de solutions javascriptPanel de solutions javascript
Panel de solutions javascriptjp_mouton
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 

Similaire à Accélérez le développement de vos interfaces web (20)

HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
Développement Web - HTML5, CSS3, APIs Web
Développement Web - HTML5, CSS3, APIs WebDéveloppement Web - HTML5, CSS3, APIs Web
Développement Web - HTML5, CSS3, APIs Web
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web components
 
Html5 now light
Html5 now lightHtml5 now light
Html5 now light
 
Création d’une application gérant l’offline et le stockage
Création d’une application gérant l’offline et le stockageCréation d’une application gérant l’offline et le stockage
Création d’une application gérant l’offline et le stockage
 
USI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SIUSI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SI
 
Le Web comme plateforme applicative - comment programme-t-on le Web?
Le Web comme plateforme applicative - comment programme-t-on le Web?Le Web comme plateforme applicative - comment programme-t-on le Web?
Le Web comme plateforme applicative - comment programme-t-on le Web?
 
Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)
 
Bootstrap 4
Bootstrap 4Bootstrap 4
Bootstrap 4
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Components
 
Le SEO JavaScript démystifié
Le SEO JavaScript démystifiéLe SEO JavaScript démystifié
Le SEO JavaScript démystifié
 
CV_Youssouph_BARRY_DRUPAL
CV_Youssouph_BARRY_DRUPALCV_Youssouph_BARRY_DRUPAL
CV_Youssouph_BARRY_DRUPAL
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
HTML5
HTML5HTML5
HTML5
 
Panel de solutions javascript
Panel de solutions javascriptPanel de solutions javascript
Panel de solutions javascript
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 

Accélérez le développement de vos interfaces web

  • 1. 1 Accélérez le développement de vos interfaces web Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval
  • 2. 2 Constats sur le développement d’interfaces web dynamiques • Assez répétitif: – Validation et soumissions de formulaire – Affichages de tableaux dynamiques – Boites de dialogues • Frameworks devenant des standards de facto: – jQuery pour le JavaScript – Bootstrap pour le CSS Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval
  • 3. 3 Pratiques pour insérer du JavaScript dans une page HTML • Inline <a href='uneurl' onclick='javascript:return confirm("Etes vous sur ? ") '> cliquez ici Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval </a> • Avantage: gestion fine des évènements • Inconvénients: • Code pas très lisible: mélange HTML / Javascript difficilement maintenable • Alourdit le poids des pages car chaque élément doit posséder le script • Code non réutilisable • JavaScript non compressible et non mis en cache • Pas de gestion si JavaScript est désactivé
  • 4. 4 Pratiques pour insérer du JavaScript dans une page HTML • Non-inline Avec jQuery: <a href='uneurl' id='id1'>cliquez ici</a> <script> (function($){ Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval $(function(){ $("#id1").on("click" , function(e){ if(! confirm("Etes vous sur ? ")){ e.preventDefault(); } }); }); })(jQuery); </script>
  • 5. 5 Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval • Avantage: • Plus grande lisibilité et maintenabilité du code • Gestion fine des évènements • Inconvénients: • Code long à écrire • Code non réutilisable • JavaScript non compressible et non mis en cache (sauf si passage par un fichier de script spécifique par page).
  • 6. 6 Solution proposée • 1 fichier de script global passant par l’utilisation d’éléments HTML Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval standardisés  Equivalent à ce que fait Bootstrap pour le CSS  Ex: <span class="col-md-3">…</span> • Avantages: – Pas de réécriture de code inutile – Allégement des pages – Possibilité de mettre en cache – Maintenabilité extrêmement simple • Scan des éléments possédant une certaine classe CSS après le chargement de la page (ou la création dynamique d’éléments HTML) et création de composants en fonction des données de ces éléments
  • 7. 7 Dans la page <a href="uneurl" class="confirmation-link" >cliquez ici</a> Dans le script $.fn.refresh = function(){ $(this).find(".confirmation-link").on("click", function(e){ if(! confirm("Etes vous sur ? ")){ e.preventDefault(); Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval } }); }
  • 8. 8 Inconvénient majeur: la personnalisation • Il n’est pas possible avec de simples classes CSS de personnaliser le contenu ou le comportement des composants – Ex: comment changer la phrase « êtes vous sûr ? » des exemples précédents ? Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval
  • 9. 9 HTML 5 à la rescousse • Arrivée des attributs data-* permettant de mettre n’importe quel contenu texte dans une balise sans rendre le HTML non valide Dans la page <a href="uneurl" data-confirm="Etes vous vraiment sûr ?" class="confirmation-link" >cliquez ici</a> Dans le script $.fn.refreshComponents = function(){ $(this).find(".confirmation-link").each(function(){ $(this).on("click", function(e){ if(! confirm($(this).data("confirm")){ e.preventDefault(); Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval } }); }); }
  • 10. 10 Cas des formulaires • Dans 90% des cas la gestion d’un formulaire se résume à : 1. Vérifier les entrées utilisateur du côté navigateur et si elles sont incorrectes bloquer l’envoi 2. Vérifier les entrées utilisateur du côté serveur et si elles sont incorrectes renvoyer une liste d’erreurs au navigateur 3. Effectuer un traitement côté serveur 4. Demander au navigateur d’effectuer une action en cas de succès (redirection vers une url, affichage d’un message de succès, insertion d’une ligne dans un tableau…) • En appliquant une standardisation du résultat renvoyé par le serveur et l’utilisation des attributs data-* il est très facile de gérer cela automatiquement sans une ligne de script spécifique Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval
  • 11. 11 Exemple de gestion des formulaires Structure JSON renvoyée par le serveur { Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval Success: bool, ErrorMessages: array, Data: object } Code HTML <form class="auto-form" action="uneurl" method="post" data-success="votre demande a été envoyée avec succès"> <div class="summary"> </div> <div> <label for="email">Votre email</label> <input type="email" name="email"/> </div> <button type="submit">Valider</button> </form>
  • 12. 12 Code JavaScript (incomplet) $.fn.refreshComponents = function(){ $(this).find(".auto-form").each(function(){ $(this).on("submit", function (e) { e.preventDefault(); var form = $(this); form.find(".validation-summary-success").removeClass("alert"); Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval form.ajaxSubmit({ dataType: 'json', type: form.attr("method") || "POST", success: function (data) { if (data.Success) { alert(form.data("success")); } else { form.displayErrors(data.Messages, error); } } }); }); }); }
  • 13. 13 Applications possibles • Lien chargeant un dialogue Ajax • Auto-validation de formulaire Personnalisation automatique de contrôles (ex: ajout automatique de datepicker sur les contrôles de type date) • Tableau dynamiques • Sélecteurs d’images • Boutons de suppression avec confirmation • Autocomplete • … Grégoire Larreur de Farcy Human Talks du 18/11/2014 à Laval