SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
RestFul Evented Javascript
                   avec sammyjs et jquery


Fabien Baligand
Constat


 Les applications RIA / SPA ont quelques
 inconvénients :

    Pas d’historique de navigation


    Bouton “Rafraichir” qui revient à la vue d’accueil


    Vues non bookmarkables
Solution : RestFul Evented Javascript


 Utiliser la partie hash de l’URL pour stocker l’état
 actuel de l’application, donc la vue en cours.


 Le changement de hash de l’URL pilote le
 changement de vue.
Solution : RestFul Evented Javascript

1. Pour chaque vue, définir une URI REST associée
   Exemple: /products/{productId}


2. Chaque fois que l’utilisateur clique sur un bouton, un lien
   ou un onglet, mettre à jour le hash de l’adresse courante,
   avec l’URI REST de la vue cible.
   Exemple: #/products/{productId}


3. Ecouter en javascript l’évènement “hashchange”, et traiter
   chaque URI REST appelée.
   Exemple: #/products/{productId} => Affichage du produit
   {productId}
Solution : RestFul Evented Javascript

 Avantages :


    Les changements de hash dans l’URL sont historisés
    => vous pouvez utiliser les boutons Précédent/Suivant du
    navigateur


    Si vous appuyez sur “Rafraichir”, le hash de l’URL est
    interprété, et vous tombez bien sur la même vue.


    Vous pouvez enregistrer en favori l’URL courante, et l’ouvrir
    plus tard, vous tombez bien sur la même vue.
Et sammyjs dans tout ça ?


 Librairie JavaScript


 Basée sur jQuery


 Permet d’écrire facilement et élégamment du code
 RestFul Evented Javascript


 http://sammyjs.org
Exemple de code sammyjs
$.sammy("#main", function() {


 this.get("#/products", function() {
   this.partial("/products.jsp");
 });


 this.get("#/products/:productId", function() {
   this.partial("/product.jsp?productId=" + this.params["productId"]);
 });


}).run("#/products");
DEMO

Contenu connexe

En vedette

Comment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jComment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jFabien Baligand
 
Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Fabien Baligand
 
Présentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaPrésentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaFabien Baligand
 
Intro to jQuery UI
Intro to jQuery UIIntro to jQuery UI
Intro to jQuery UIappendTo
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

En vedette (6)

Comment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jComment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4j
 
JQuery UI
JQuery UIJQuery UI
JQuery UI
 
Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)
 
Présentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaPrésentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source java
 
Intro to jQuery UI
Intro to jQuery UIIntro to jQuery UI
Intro to jQuery UI
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similaire à RestFul Evented Javascript avec sammyjs et jquery

Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2dhugomallet
 
HTML5 et le SEO : quelles opportunités ?
HTML5 et le SEO : quelles opportunités ?HTML5 et le SEO : quelles opportunités ?
HTML5 et le SEO : quelles opportunités ?Eroan Boyer
 
Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011Sylvain Wallez
 
Présentation complète de l'HTML5
Présentation complète de l'HTML5Présentation complète de l'HTML5
Présentation complète de l'HTML5jverrecchia
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
4IPDW - projet personnel.docx
4IPDW - projet personnel.docx4IPDW - projet personnel.docx
4IPDW - projet personnel.docxTarikElMahtouchi1
 
WebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsWebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsVincent Perrin
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
Présentation de Ruby on Rails
Présentation de Ruby on RailsPrésentation de Ruby on Rails
Présentation de Ruby on RailsJulien Blin
 
Les bonnes pratiques SEO avec les frameworks javascript - SEO CAMPUS 9 mars 2017
Les bonnes pratiques SEO avec les frameworks javascript - SEO CAMPUS 9 mars 2017Les bonnes pratiques SEO avec les frameworks javascript - SEO CAMPUS 9 mars 2017
Les bonnes pratiques SEO avec les frameworks javascript - SEO CAMPUS 9 mars 2017Peak Ace
 
Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007Netvibes
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
Controller_Rest.pptx
Controller_Rest.pptxController_Rest.pptx
Controller_Rest.pptxManalAg
 
Developpement dun site_web_developpement
Developpement dun site_web_developpementDeveloppement dun site_web_developpement
Developpement dun site_web_developpementmosalah38
 
Developpement_dun_site_web_Developpement.pdf
Developpement_dun_site_web_Developpement.pdfDeveloppement_dun_site_web_Developpement.pdf
Developpement_dun_site_web_Developpement.pdfSofianeHassine2
 
BordeauxJUG : Portails & Portlets Java
BordeauxJUG : Portails & Portlets JavaBordeauxJUG : Portails & Portlets Java
BordeauxJUG : Portails & Portlets JavaCamblor Frédéric
 

Similaire à RestFul Evented Javascript avec sammyjs et jquery (20)

Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2d
 
HTML5 et le SEO : quelles opportunités ?
HTML5 et le SEO : quelles opportunités ?HTML5 et le SEO : quelles opportunités ?
HTML5 et le SEO : quelles opportunités ?
 
Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011
 
Présentation complète de l'HTML5
Présentation complète de l'HTML5Présentation complète de l'HTML5
Présentation complète de l'HTML5
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
4IPDW - projet personnel.docx
4IPDW - projet personnel.docx4IPDW - projet personnel.docx
4IPDW - projet personnel.docx
 
Association 2 0
Association 2 0Association 2 0
Association 2 0
 
WebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsWebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet Applications
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Présentation de Ruby on Rails
Présentation de Ruby on RailsPrésentation de Ruby on Rails
Présentation de Ruby on Rails
 
Les bonnes pratiques SEO avec les frameworks javascript - SEO CAMPUS 9 mars 2017
Les bonnes pratiques SEO avec les frameworks javascript - SEO CAMPUS 9 mars 2017Les bonnes pratiques SEO avec les frameworks javascript - SEO CAMPUS 9 mars 2017
Les bonnes pratiques SEO avec les frameworks javascript - SEO CAMPUS 9 mars 2017
 
Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007
 
Rapport tp2 j2ee
Rapport tp2 j2eeRapport tp2 j2ee
Rapport tp2 j2ee
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
Intro à angular
Intro à angularIntro à angular
Intro à angular
 
Controller_Rest.pptx
Controller_Rest.pptxController_Rest.pptx
Controller_Rest.pptx
 
Developpement dun site_web_developpement
Developpement dun site_web_developpementDeveloppement dun site_web_developpement
Developpement dun site_web_developpement
 
Developpement_dun_site_web_Developpement.pdf
Developpement_dun_site_web_Developpement.pdfDeveloppement_dun_site_web_Developpement.pdf
Developpement_dun_site_web_Developpement.pdf
 
BordeauxJUG : Portails & Portlets Java
BordeauxJUG : Portails & Portlets JavaBordeauxJUG : Portails & Portlets Java
BordeauxJUG : Portails & Portlets Java
 
Marzouk jsp
Marzouk jspMarzouk jsp
Marzouk jsp
 

RestFul Evented Javascript avec sammyjs et jquery

  • 1. RestFul Evented Javascript avec sammyjs et jquery Fabien Baligand
  • 2. Constat Les applications RIA / SPA ont quelques inconvénients : Pas d’historique de navigation Bouton “Rafraichir” qui revient à la vue d’accueil Vues non bookmarkables
  • 3. Solution : RestFul Evented Javascript Utiliser la partie hash de l’URL pour stocker l’état actuel de l’application, donc la vue en cours. Le changement de hash de l’URL pilote le changement de vue.
  • 4. Solution : RestFul Evented Javascript 1. Pour chaque vue, définir une URI REST associée Exemple: /products/{productId} 2. Chaque fois que l’utilisateur clique sur un bouton, un lien ou un onglet, mettre à jour le hash de l’adresse courante, avec l’URI REST de la vue cible. Exemple: #/products/{productId} 3. Ecouter en javascript l’évènement “hashchange”, et traiter chaque URI REST appelée. Exemple: #/products/{productId} => Affichage du produit {productId}
  • 5. Solution : RestFul Evented Javascript Avantages : Les changements de hash dans l’URL sont historisés => vous pouvez utiliser les boutons Précédent/Suivant du navigateur Si vous appuyez sur “Rafraichir”, le hash de l’URL est interprété, et vous tombez bien sur la même vue. Vous pouvez enregistrer en favori l’URL courante, et l’ouvrir plus tard, vous tombez bien sur la même vue.
  • 6. Et sammyjs dans tout ça ? Librairie JavaScript Basée sur jQuery Permet d’écrire facilement et élégamment du code RestFul Evented Javascript http://sammyjs.org
  • 7. Exemple de code sammyjs $.sammy("#main", function() { this.get("#/products", function() { this.partial("/products.jsp"); }); this.get("#/products/:productId", function() { this.partial("/product.jsp?productId=" + this.params["productId"]); }); }).run("#/products");