Tout-sur-le-Javascript.pdf
17 juil. 2010 ... le tuto de M@teo sur les sites Web. Le JavaScript est en effet un langage qui dépend du (x)HTML. ... lien vers le site du zéro -->.
SupMTI
12 août 2011 Le Javascript "dans la page" . ... Zéro mais pas tous (il n'est pas possible de tout mettre en ligne il y a trop d'exemples).
Découvrez le langage JavaScript
Le JavaScript est donc devenu un acteur majeur dans la création de sites web. Il a vu le jour puisqu'il est le créateur du Site du Zéro OpenClassrooms.
Simplifiez vos développements JavaScript avec jQuery
10 oct. 2012 À l'image suivante par exemple le fichier est déplacé dans le dossier dataSite du ZérojQuerydev. Partie 1 : Introduction à jQuery.
M1IF03 Conception dApplications Web
asynchrone AJAX ? Page 10. Asynchronous Javascript And XML (AJAX). Exemple de code : création
Le blog OpenClassrooms
Résumé. Ce Livre du Zéro présente la programmation en JavaScript l'un des langages du Web le plus utilisé au monde. Les auteurs détaillent comment
Cours - TD - TP de SQL
Le code JS qui s'ajoute à la page HTML dans une balise <script>. trouve un pdf et des exemples JavaScript ES6 Python et Java. • Les grands framework JS ...
Un site dynamique avec PHP ! - Le Site du Zéro
28 oct. 2005 http://www.siteduzero.com/tuto-29-4-0-un-site-dynamique-avec-php.html ... code javascript qui affiche une boîte de dialogue (très gênant) ou ...
RECOMMANDATIONS POUR LA MISE EN ŒUVRE DUN SITE
28 avr. 2021 le style (CSS) et la logique (JavaScript) d'une page web afin de réduire ... audio et vidéo des contenus embarqués type PDF et des fontes;.
CONCEPTION ET DÉVELOPPEMENT
CLIENT
LIONEL MÉDINI
NOVEMBRE 2021
M1IF03
Plan du cours
yAsynchronousJavascriptAnd XML (AJAX) {Mécanismes de requêtes asynchrones {Quelques patterns de conception en AJAX {Considérations de sécurité yFetchAPI yOutils de conception et de développement {jQuery {jQuery UI ySingle-Page Application yConclusionIntroduction
yObjectif : concevoir des applications Web "riches» {Web-basedÙParadigme client-serveur, HTTP
ÎProgrammation côté serveur et côté client {Expérience utilisateur proche des applications natives ÙInterface utilisateur fluide, ergonomique, dynamiqueÎÉchanges client-serveur asynchrones (AJAX)
{Logique métier complexe ÙOutils "évolués» de modélisation, conception, développement ÎHG( 322 80I GHVLJQ SMPPHUQV PpPORGHV MJLOHV ;3" ÎOù placer la logique métier ? La couche données ?AsynchronousJavascriptAnd XML (AJAX)
{Côté serveurÙRessources statiques
|Modèle de document, bibliothèques de scripts, feuilles de style ÙTraitements dynamiques des données (couche métier) {Côté clientÙGestion des événements utilisateur
HTTP, (X)HTML
AsynchronousJavascriptAnd XML (AJAX)
{Côté serveurÙRessources statiques
|Modèle de document, bibliothèques de scripts, feuilles de style ÙTraitements dynamiques des données (couche métier) {Côté client ÙContrôleurs délégués relatifs à un type de vueÙGestion des événements utilisateur
ÙTraitement des données reçues (couche métier)HTTP, XML, JSON
AsynchronousJavascriptAnd XML (AJAX)
yGénéralités sur AJAX {Applications web avec interface utilisateur {Déporter un maximum de code sur le client ÙRéduction des ressources consommées côté serveurÙRéduction de la bande passante réseau
{Applications Web AJAX les plus connuesÙGoogle (Mail, Map, Earth"
ÙSuggestions automatiques
ÙTraitement de texte
{ExempleAsynchronousJavascriptAnd XML (AJAX)
yFonctionnement {Requête asynchrone au serveur dans une fonction JavaScript (déclenchée par un événement quelconque) {Transfert asynchrone de données en XML {Traitement dynamique côté client Ù$IILŃOMJH LQŃOXVLRQ MX GRŃXPHQP +70I PUMQVIRUPMPLRQ ;6I7" ÙLogique applicative (fonctions JavaScript dédiées) ySpécificité de la technologie AJAX {Requête asynchrone sur un document XML viaunÙObjet XMLHttpRequest(Mozilla)
ÙContrôle ActiveX XMLHTTP (IE)
AsynchronousJavascriptAnd XML (AJAX)
yFonctionnementÙEnvoi de la requête
|Créer un objet requête |Spécifier les éléments de la requêteURL, méthode , headers HTTP, paramètres
ÙRéception de la réponse
"ready» |Traiter les données reçuesAsynchronousJavascriptAnd XML (AJAX)
yFonctionnement asynchrone AJAX ?AsynchronousJavascriptAnd XML (AJAX)
var req= null; functiongetRequest() if (window.XMLHttpRequest) req= new XMLHttpRequest(); elseif (typeofActiveXObject!= "undefined") req=new ActiveXObject("Microsoft.XMLHTTP"); return req;Safari / Mozilla
Internet Explorer
AsynchronousJavascriptAnd XML (AJAX)
yExemple de code : chargement asynchrone functionGetDataUsingAJAX(HttpMethod, url, params, elt) if(req!= null) // méthode avec paramètres req.onreadystatechange= function() {stateChange(elt)}; // méthode sans paramètre // req.onreadystatechange= stateChange; req.open(HttpMethod, url,true); req.setRequestHeader("Accept", "application/xml"); req.send(params);Association
de callback aux changements réponseAsynchronousJavascriptAnd XML (AJAX)
functionstateChange(elt) if(req.readyState== 4){ if (req.responseXML!= null) { var docXML= req.responseXML; } else{ var docXML= req.responseText; docXML=parseFromString(docXML); var docXMLresult= traiteXML(docXML); var str= (new XMLSerializer()).serializeToString(docXMLresult); document.getElementById(elt).innerHTML+= str;READY_STATE_COMPLETE
AsynchronousJavascriptAnd XML (AJAX)
yExemple de code : transformation XSLT //Après chargement asynchrone des documents XML et XSLT functiontransformXSLT (XMLDoc, XSLDoc, id) if(XMLDoc== null|| XSLDoc== null) {return;} try{ if (window.ActiveXObject) var target= document.getElementById(id); target.innerHTML= xml.transformNode(xsl);Internet Explorer
AsynchronousJavascriptAnd XML (AJAX)
yExemple de code : transformation XSLT } elseif (window.XSLTProcessor) { var fragment; var xsltProcessor= new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); fragment = xsltProcessor.transformToFragment(xml, document); var target= document.getElementById(id); target.appendChild(fragment); } catch (e) { return e;Safari / Mozilla
AsynchronousJavascriptAnd XML (AJAX)
yImplémentation de la logique applicative ÙRéécriture de fonctionnalités existantes ÙMélange de la logique métier et des fonctionnalités techniquesÙRéutilisabilité moyenne
ÙCode parfois un peu "fouillis»
ÙLangages / IDE spécifiques (ou plugins de votre IDE préféré)ÙLirairies/ frameworksopen source
AsynchronousJavascriptAnd XML (AJAX)
yImplémentation de la logique applicative {Standardisation de la communication avec les langages de programmation côté serveur : JSON ÙSpécification liée à ECMAScript±RFC 4627ÙImplémentée par tous les navigateurs
ÙPermet de sérialiser des types de données (alternative à XML) ÙDéfinit des types de données de façon simple ÙIndépendant du langage de programmation utilisé ÎPermet les échanges de données entre serveur et clientÙSyntaxe : des inclusions
S QRPPHPNUH1 YMOPHPNUH1 QRPPHPNUH2 YMOPHPNUH2 " `L YMOHXU1 YMOHXU2 YMOHXU3 "@
AsynchronousJavascriptAnd XML (AJAX)
yImplémentation de la logique applicative {Standardisation de la communication avec les langages de programmation côté serveur : JSONÙExemple de fichier
au format JSON :ÙEquivalence en XML :
{Source : http://www.xul.fr/ajax-format-json.html { "menu": "Fichier", "commandes": [ { "title": "Nouveau", "action":"CreateDoc" }, { "title": "Ouvrir", "action": "OpenDoc" }, { "title": "Fermer", "action": "CloseDoc" } ] }AsynchronousJavascriptAnd XML (AJAX)
yImplémentation de la logique applicative {Standardisation de la communication avec les langages de programmation côté serveur : JSONÙUtilisation côté client :
ÙUtilisation côté serveur : librairies ad hoc req.open("GET", "fichier.json", true); // requête i var doc = JSON.parse(req.responseText); // récupération i var nomMenu= document.getElementById('jsmenu'); // recherche nomMenu.value= doc.menu.value; // assignation i doc.commands[0].title// lire la valeur "title" dans le tableau doc.commands[0].action // lire la valeur "action" dans le tableauAsynchronousJavascriptAnd XML (AJAX)
yQuelques règles de conception en AJAX {Utiliser des design patternsÙAdaptateur
|Le plus utilisé |7HVPH] OM IRQŃPLRQQMOLPp j XPLOLVHU SMV OH QMYLJMPHXU"ÙMVC
|De préférence type 2 (avec contrôleurs délégués) |Isoler les parties du modèle |Répartir les traitements de chaque partie entre serveur et client |Indiquer à la vue comment restituer les objets du modèleÙObservateur
|Permet de définir un modèle événementiel |Si celui de JavaScript est insuffisant |Il en existe plusieurs dans des librairies open source (W3C)AsynchronousJavascriptAnd XML (AJAX)
yAJAX a aussi ses inconvénients {Toute une application dans la même pageÙBouton "Back» inutilisable
ÙDéfinition de bookmarks sur une vue particulière impossible {Génération dynamique des contenus ÙIndexation par des moteurs de recherche impossible {Téléchargement du code applicatif sur le client {Complexité des développements ÙAppropriation et utilisation des différentes technos parfois coûteuse Source : http://dico.developpez.com/html/1710-Internet-Ajax-Javascript-Asynchrone-et-XML.phpAsynchronousJavascriptAnd XML (AJAX)
ySécurité {Déporter de la logique applicative sur le client présente des risques {Remarque ayant délivré le script est impossible (en principe) |la partie applicative tournant sur le client est-elle réellement celle envoyée par le serveur ?ÎDouble validation (mots de passe)
AsynchronousJavascriptAnd XML (AJAX)
ySécuritéÙCross-site scripting(XSS)http://cwe.mitre.org/top25/index.html#CWE-79https://www.owasp.org/index.php/XSS
|violation de la same-originpolicy |exemple: injection de scripts dans les commentaires des forums ÎRevenir au HTML de base pour les données sensibles ÎVérifier le contenu saisi par les utilisateursÙCross-site requestforgery(CSRF)http://cwe.mitre.org/top25/index.html#CWE-352https://www.owasp.org/index.php/CSRF
FetchAPI
yPrincipe {Fournir des primitives de plus haut niveau queXmlHttpRequest
{Accepter les réponses streamées("chunked») {Récupérer du texte ou du JSON (pas de XML) ÎEncapsuler les requêtes asynchrones dans des promesses yExemple (simple) fetch('./monUrl/quiRenvoie/du.json') .then(res=> res.json()) .then(json=> console.log(json));FetchAPI
yLa méthode fetch() {Seul paramètre obligatoire : URL {Remarque : il faut explicitement autoriser fetch()à envoyer des credentialsŃRRNLHV" fetch(url, { method: "POST", // *GET, POST, PUT, DELETE, etc. mode: "cors", // no-cors, cors, *same-origin cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached credentials: "same-origin", // include, *same-origin, omit headers: { "Content-Type": "application/json; charset=utf-8", redirect: "follow", // manual, *follow, error referrer: "no-referrer", // no-referrer, *client body: JSON.stringify(data), // body data type must match "Content-Type" headerFetchAPI
yLa méthode fetch() {Renvoie une réponse ÙQui peut être wrappéedans différents formats (en fonction du Content-Type)ÎIl faut tester le code de retour HTTP
{La valeur de retour est une promesseFetchAPI
yExemple de réponseFetchAPI
yGestion des erreurs {fetch()lève une erreur en cas de :ÙProblème réseau
ÙRéponse non conforme au résultat attendu (parsingJSON) fetch(https://maRessourceCORS/', {mode: 'cors'}) .then(response=> { if(response.ok) { return response.text(); } throw new Error('ErreurHTTP : ' + response.status); .then(text=> { console.log('Corps de la réponse :', text); }) .catch(error=> { console.log('Erreur dans la réception de la requête : ', error);FetchAPI
yRéférences {SpecÙhttps://fetch.spec.whatwg.org/
{TutosÙhttps://developer.mozilla.org/en-
US/docs/Web/API/Fetch_API/Using_Fetch
n-to-fetch Outils d'aide à la programmation côté clientquotesdbs_dbs1.pdfusesText_1[PDF] jb say
[PDF] je fabrique mes cosmétiques de sylvie hampikian pdf
[PDF] je m'exerce ce2 pdf
[PDF] je m'exerce cm1 pdf
[PDF] je m'exerce cp pdf
[PDF] je m'exprime 4am page 16
[PDF] je me prépare au brevet 4am page 187
[PDF] je mémorise et je sais écrire des mots ce2 progression
[PDF] je monte mon label pdf
[PDF] je n'ai pas de numéro de sécurité sociale
[PDF] je précise les dates de mon séjour en france
[PDF] je prends bonne note de votre mail
[PDF] je prends bonne note synonyme
[PDF] je soussigné docteur atteste que l'état de santé de