Dupliquer une ligne dans VSCode
Dupliquer une ligne dans VSCode
MÉTIERS DE
L’INFORMATIQUE
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
L’environnement de travail
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Environnement de travail
Pour coder en javascript, un simple éditeur de texte suffit comme par exemple Notepad++
et un navigateur HTML.
Cependant de nos jours, l’utilisation d’un Ide (Integrated Development Environment) est préférable. Il en
Environnement de travail
Pour cette formation, je vous conseille VsCode, auquel nous allons ajouter quelques extensions :
- EsLint
- Live server
- Prettier
- TabNine
- Indent-Rainbow
- Javascript (ES6)
Les variables
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les variables
Votre programme utilise des variables pour enregistrer et manipuler ces données.
Plus précisément, une variable est un contenant utilisé pour enregistrer une donnée spécifique dont
Les variables
Les variables
ageMaximum = 15;
Les variables
- Évitez d’utiliser des abréviations ou de raccourcir des mots à chaque fois que c’est possible,
Les variables
Dans cette convention, les noms sont constitués de plusieurs mots dont l’initiale est en capitale, sauf la
première initiale.
Les variables
Une variable, ne peut commencer par un chiffre et ne doit jamais contenir de caractères spéciaux,
ni accent.
Les variables
Pour utiliser une variable, il faut la déclarer avec le mot clé «let»
let ageMaximum; // 1
A la première instruction, nous avons seulement déclarer la variable, elle existe mais elle est vide,
A la seconde instruction, nous avons déclaré une variable et initialisé, en lui affectant une valeur.
Les variables
Vous trouverez dans la littérature «affectation» ou «assignation», «affecter» ou «assigner», c’est la même
chose.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les variables
Pour modifier une variable existante, il suffit de lui assigner une nouvelle valeur, sans la redéclarer
ageMaximum = 30;
Vous trouverez dans pleins de programme, «var myVariable», pour l’instant utiliser «let»
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les types
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les types
En Javascript, on peut stocker différents types de valeurs, comme des nombres, textes...
Contrairement à d’autres langages de programmation, nous n’avons pas besoin de préciser à priori le
Le JavaScript va en effet automatiquement détecter quel est le type de la valeur stockée dans telle ou
telle variable, et nous allons ensuite pouvoir effectuer différentes opérations selon le type de la variable.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les types
- number «nombre»
- boolean «booléen»
- null «null»
- undefined «indéfini»
- symbol «symbole»
- object «objet»
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Le type : string
Les strings sont affectées via des guillemets (double quote) ou des apostrophes (simple quote)
// OR
Le type : string
Si vous affectez une variable avec un nombre entre guillemets, elle sera considérée comme une string
Le type : string
A l’exception des chaines de caractères contenant un guillemet ou une apostrophe, il faudra «échapper»
Le type : number
Les numbers, regroupent tous les types numériques, entiers, négatifs, décimaux (avec virgule -> float);
let x = 2;
let y = -3;
let z = 2.5;
Le type : boolean
Les booleans, sont des types qui ne peuvent prendre pour valeur que 0 (ou false), 1 (ou true);
let vrai = true ou let vrai = 1 sont identiques mais Il est conseillé false et true, idem avec false
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les nulls et undefined, sont des types qui ne peuvent prendre pour valeur que null ou undefined.
Une variable déclarée mais non affectée, aura pour type undefined
let var1;
La valeur null, correspond à l’absence de valeur. Cette valeur va être utile dans certains cas où on
Les objects et symbols sont des structures complexes qui peuvent stocker en même temps plusieurs
Les opérateurs
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les Opérateurs
Les opérateurs sont des symboles qui vont permettre d’effectuer des opérations sur les variables et leur
valeur.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les Opérateurs
- L’opérateur de concaténation,
- L’opérateur ternaire,
- L’opérateur virgule.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les Opérateurs
A ce point, nous allons regarder les opérateurs arithmétiques, et les opérateurs d’affectation.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Opérateur Opération
+ Addition
- Soustraction
* Multiplication
/ Division
% Modulo (reste d’une division)
** Exponentielle
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
L’opérateur modulo
[Link](reste); // => 2
Explication :
5 - (3*1) = 2
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
L’opérateur exponentielle
[Link](exponentiel); // => 25
// 5*5
[Link](exponentiel); // => 8
// 2*2*2
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Priorité
Les priorités de règles de calcul sont les mêmes qu’en mathématique, la multiplication et la division
Priorité
Nous allons finalement, comme en mathématique, pouvoir forcer l’ordre de priorité en utilisant des
couples de parenthèses pour indiquer qu’une opération doit se faire avant toutes les autres
let a = 1 - 2 - 3; // -4
Opérateur Opération
= Affecte une valeur
+= Additionne lui-même puis affecte une valeur
-= Soustrait lui-même puis affecte une valeur
*= Multiplie lui-même puis affecte une valeur
/= Divise lui-même puis affecte une valeur
%= Calcule le modulo puis affecte une valeur
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
let x=3;
x = x + 5; // => 8
x += 5; // => 8
let y=5;
y = y -2 ; // => 3
y -= 2 ; // => 3
Ces opérateurs (sauf =) permettent de faire une opération arithmétique puis une affectation.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
La concaténation
alert(‘a = ‘ + a +
‘\nb = ‘ + b +
‘\nConcatener = ‘ + a + ‘ ‘ + b);
alert() permet d’afficher une information à l’écran dans une boîte de dialogue
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les littéraux de gabarit sont une autre façon de réaliser des concaténations, c’est utilisé essentiellement
pour l’affichage.
La grande différence entre l’utilisation de ` (back tick) ou l’utilisation d’apostrophes ou de guillemets est
que toute expression placée entre les ` (back tick) va être interprétée en JavaScript.
Pour le dire simplement : tout ce qui renvoie une valeur va être remplacé par sa valeur. Pour se faire il
Les variables vont être placées entre ${ et }, javascript va remplacer automatiquement les variables par
leur valeur.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Notez également, que je n’ai plus besoin de forcer le retour à la ligne car dans l’expression je retourne à
la ligne
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les constantes
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les constantes
Une constante est identique à une variable, c’est une unité de stockage.
La grosse différence, est comme son nom l’indique, qu’une constante ne peut changer de valeur.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les constantes
Par convention, les constantes «de valeurs» sont en majuscule (upper case)
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les tableaux sont des variables (en fait ce sont des objets), qui peuvent contenir plusieurs valeurs.
Pour accéder, a une valeur précise d’un tableau, il faut utiliser son index, c’est à dire sa position dans le
Index Valeur
Pour accéder à une valeur, on utilise var[index]
0 1
1 2 [Link](tableau1[2]); // => 3
2 3
3 4
4 5
5 6
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les tableaux associatifs sont des tableaux qui associent une clé à une valeur
let tableau2 = {
name: ‘borg’,
firstname: ‘jerome’,
age: 49
}
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
let tableau2 = {
name: ‘borg’,
firstname: ‘jerome’,
age: 49
Pour accéder à une valeur, au lieu d’utiliser l’index vous allez utiliser la référence
[Link](tableau2[‘age’]);// => 49
/*OU*/
[Link]([Link]);// => 49
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Dans un tableau associatif, la référence ou clé, est notée sans apostrophe ou guillemet et suivi de «:»,
pour accéder à une valeur, il faut utiliser la clé entre apostrophe ou guillemet
Pour un tableau indexé, pour connaitre le nombre d’élément on utilise la fonction length
[Link]([Link]); // => 6
[Link]([Link](tableau2).length); // => 3
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Function Définition
length renvoi la longueur d’un tableau indexé
toString() convertit un tableau en string séparé par ,
join(separator) convertit un tableau en string séparé par separator
pop() extrait et renvoi le dernier élément d’un tableau
push() ajoute à la fin un élément dans le tableau
shift() extrait et renvoi le premier élément d’un tableau (pop inverse)
unshift() ajoute au début un élément dans le tableau (push inverse)
splice() ajouter de nouveaux éléments a un tableau, à une position
donnée
slice() extrait et renvoi une partie d’un tableau, à une position donnée
split() convertit une chaine de caractère en tableau
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Function Définition
filter() renvoi un tableau avec les éléments qui répondent à la condition
find() renvoi le 1er élément qui répond à la condition
forEach() parcours un tableau (autre sorte de boucle)
map() parcours un tableau et effectue une opération pour chaque item
reduce() parcours et renvoie la somme des éléments
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les structures de contrôle, sont un ensemble d’instruction qui permettent de contrôler l’exécution du
- conditionnelle
- boucle.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les conditions
- if (si) ;
Opérateur Définition
== Test l’égalité de valeur (égalité simple)
=== Test l’égalité de valeur et de type (égalité stricte)
!= Test la différence de valeur
!== Test la différence de valeur ou de type
< Test si une valeur est strictement inférieure à une autre valeur
> Test si une valeur est strictement supérieure à une autre valeur
<= Test si une valeur est inférieure ou égale à une autre valeur
>= Test si une valeur est supérieure ou égale à une autre valeur
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Dans le cas du And, a la première comparaison qui est fausse, le test s’arrête et renvoie false
Dans le cas du Or, a la première comparaison qui est vrai, le test s’arrête et renvoie true
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les ternaires
Les ternaires sont des structures conditionnelles mais avec une syntaxe différente et raccourci
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les ternaires
do true;
} else {
do false;
Si la condition est vrai ? (alors) Action pour vrai : (sinon) action pour faux
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
switch
C’est une alternative au if, mais ne fonctionne que sur des valeurs précises,
Cela évite les if elseif elseif elseif else interminable, et c’est plus lisible
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
switch
let a = 2;
switch (a) {
case 2 :
// do something for 2
break;
case 4 :
// do something for 4
break;
case 6 :
// do something for 6
break;
case 8 :
// do something for 8
break;
default :
// do something else
}
// Notez l’instruction break pour sortir du switch lorsque la condition est remplie.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les boucles
Il est aussi possible que le nombre de fois n’importe pas, et que vous souhaitiez répéter le code jusqu’à
atteindre une certaine condition. Pour tous ces cas, nous utiliserons des boucles.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
[Link](i);
Une boucle for est généralement utilisée, lorsque que l’on connait le nombre de répétition (itération).
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Ces 2 boucles sont quasi identiques, et s’utilisent lorsqu’on ne connait pas le nombre d’itération.
while(somme1 <=10) { do {
somme1++; somme2++;
} }
while(somme2 <=10)
La différence entre les deux, est le test de condition de sortie dans un cas au début, et dans l’autre à la fin.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Rappelez-vous que les tableaux sont des objets, et s’ils contiennent plusieurs éléments, on peut donc
Item va représenter un élément de la boucle, avec une boucle for standard, item a la première itération
serait array1[0]
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
if (i % 2) { // impair
continue;
}
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
let iteration;
if (i === SEARCH_NUMBER) {
iteration = i;
break;
[Link](iteration);
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les fonctions
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les fonctions
«Une fonction correspond à un bloc de code nommé et réutilisable et dont le but est d’effectuer une
tâche précise.»
Dans tous les langages de programmation, il existe des fonctions natives ou prédéfinies, ce sont les
Les fonctions
Par exemple la fonction split, qui va transformer une chaine de caractère en un tableau
[Link](separateur)
[Link]([Link]); // => 4
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les fonctions
Pour créer une fonction personnalisée, on utilise le mot clé function suivi du nom de la fonction, et entre
function aleatoire() {
return [Link]()*100;
Les fonctions
function carre(x) {
let resultat = x * x;
return resultat;
Les fonctions
Notre fonction exécute son code, puis renvoi son résultat via le mot clé return
carre(2)
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les fonctions
Dans un souci pédagogique, nous avons détaillé, mais nous pouvons faire plus court, cette opération
s’appelle «refactoriser»
function carre(x) {
return x * x;
La portée des variables ou scope, désigne l’espace du script ou cette variable sera accessible. Toutes les
variables ne sont pas accessibles de n’importe quel endroit de notre programme.
Il existe 2 espaces de portés différents : l’espace global et l’espace local.
Une variable définit dans l’espace global avec être accessible dans tous les scripts même dans les
fonctions.
Une variable définit dans une fonction ne sera accessible que dans de cette fonction, et non manipulable
dans l’espace global.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
let x = 5;
Let x est définie dans l’espace global donc accessible dans l’espace global et dans les fonctions
test1 => peut accéder à x et peut le modifier
test2 => a est définie en local, donc accessible que de cette fonction et pas des autres fonctions, ni en
global, d’où l’erreur a la dernière ligne
test3 => x est global, est a été modifié dans test1() x++; donc x vaut maintenant 6
function test1() {
let x = 10;
var y = 10;
if (true) {
let x = 15;
var y =15;
[Link](‘if x:’, x); // => 15
[Link](‘if y:’, y); // => 15
}
[Link](‘x:’, x); // => 10
[Link](‘y:’, y); // => 15
}
test1();
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Au sein de notre fonction, on définit y, dans la condition if, on redéfini y a 15, mais également x, mais
c’est un nouveau x, alors que le y est celui de la fonction.
Il est préconisé de ne plus utiliser var, d’autre part, c’est une mauvaise pratique d’utiliser des variables de
même nom dans une même fonction, cela porte à confusion.
Les fonctions anonymes, sont des fonctions qui n’ont pas de nom.
En général, on utilise les fonctions anonymes lorsque le code de la fonction est unique, donc non
réutiliser.
On définit le prototype d’une fonction anonyme comme n’importe quelle fonction, mais sans lui donner
de nom
function () {
alert(‘hello world’);
}
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Pour auto-invoquer une fonction il faut placer la fonction anonyme entre () et la finir par des ()
Pour exécuter une fonction après un évènement (on y reviendra plus tard)
<div id=’bloc’>Lorem ipsum, ....</div>
<script>
let bloc = [Link](‘bloc’);
[Link](‘click’, function () {
alert(‘Clic sur la div bloc’);
});
</script>
Examinons ce code,
On définit une div avec du texte, on lui attribue l’id «bloc»
On récupère de la dom (on y reviendra plus tard), la div «bloc»
On affecte un écouteur d’événement à ce bloc, l’évènement sera un click sur la div, et on exécute la
fonction anonyme.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
function countDown(val) {
if (val > 0) {
// do something
[Link](val);
return countDown(val - 1);
} else {
// on sort de la recursivité
[Link](‘end:’, val);
}
}
countDown(5);
5
4
3
2
1
end:0
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Si la valeur est > 0, on va exécuter du code «do something», et s’auto rappeler avec sa valeur -1
Soyez très vigilent, avec l’utilisation de la récursivité, vous pouvez très facilement générer des
boucles infinies, c’est à dire que votre condition de sortie n’est jamais atteinte.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Le BOM
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Le Bom (Browser Object Model), est une sorte de «super-api» car elle contient de multiple api. Une api
ensemble de code permettant de communiquer entre deux éléments. Par exemple, un clavier est une
interface, on n’a pas besoin de savoir ce qui se passe réellement lorsque que je clique sur la touche «a»,
tout ce que l’on a besoin de savoir, est qu’un «a» apparaitra à l’écran.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
A la base de la Bom, nous avons l’interface Window, qui contient les objets suivants :
- L’objet Location, qui fournit des informations sur l’url en cours (rien a voir avec la géolocalisation)
- L’objet Document, c’est en gros le Dom, que nous verrons juste après
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Propriété Définition
outerHeight hauteur «externe» de la fenêtre de navigation avec les options du navigateur
outerWidth largeur «externe» de la fenêtre de navigation avec les options du navigateur
innerHeight hauteur «interne» de la fenêtre de navigation sans les options du navigateur
innerWidth largeur «interne» de la fenêtre de navigation sans les options du navigateur
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Propriété Définition
open(url, taille) hauteur «externe» de la fenêtre de navigation avec les options du navigateur,
renvoie une référence à la fenêtre ouverte
resizeBy(w, h) redimensionne la taille de la fenêtre en ajoutant w et h
resizeTo(w,h) redimensionne la taille de la fenêtre a w et h
moveBy(x,y) déplace la fenêtre de x et y par rapport à la position actuelle
moveTo(x,y) déplace la fenêtre de x et y par rapport au haut gauche de l’écran
scrollBy(x,y) scroll de x et y par rapport à la position actuelle
scrollTo(x,y) scroll de x et y par rapport au haut gauche de l’écran
close() permet de fermer une fenêtre référencée
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Exemple
[Link]();
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Le DOM
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Le Dom (Document Object Model, modèle objet d’un document), que nous avons déjà évoqué sur l’html,
est une représentation structurée sous forme d’arbre, de tous les éléments de notre document. Chaque
Il existe plusieurs façons d’accéder aux noeuds, on peut par le nom du tag (p), le nom de la classe
plusieurs d’élément (un tableau), car une classe ou un tag ou un name peut être multiple,
<h1>Titre</h1>
Il faut juste formater le paramètre afin que javascript identifie s’il doit chercher une classe, un tag, ou un id
Type Codage
Class .nomClasse
Tag nomTag
Id #nomId
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
<h1>Titre</h1>
Avec children, on peut accéder aux enfants de l’élément, les enfants sont dans une collection (tableau)
L’ÉCOLE DES EXPERTS
<script>
MÉTIERS DE
L’INFORMATIQUE
let h1 = [Link](‘h1’);
[Link] = ‘#ccc’;
<div> Titre
</script>
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
A noter, que les styles modifiés sont les styles en ligne, et non ceux d’une classe.
A noter également que les styles sont accessibles en lower camel case
Modifier le contenu
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Méthode Définition
innerHTML récupère tous ce qu’il y a à l’INTERIEUR des balises HTML
outterHTML récupère tous ce qu’il y a à l’INTERIEUR des balises HTML et les balises HTML
textContent accède au contenu textuel (visible ou pas) de l’élément, les balises script ou style
sont renvoyées
innerText accède au contenu textuel (visible) de l’élément, les balises script ou style NE sont
PAS renvoyées
[Link]('inner:', [Link]);
Naviguer dans le DOM // inner: <span class="gras">Titre</span>
<h1 class='titre’>
[Link]('outer:', [Link]);
<span class='gras'>Titre</span>
// outer: <h1 class="titre"><span
</h1>
class="gras">Titre</span></h1>
[Link]('textContent:', [Link]);
// Titre
[Link]('innerText:', [Link]);
// Titre
let h1 = [Link](‘h1’);
[Link]('inner:', [Link]);
Naviguer dans le DOM // inner: <span class="gras">Titre</span>
<h1 class='titre’>
[Link]('outer:', [Link]);
<span class='gras'>Titre</span>
// outer: <h1 class="titre"><span
</h1>
class="gras">Titre</span></h1>
[Link]('textContent:', [Link]);
// Titre
[Link]('innerText:', [Link]);
// Titre
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les attributs
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les attributs
if ([Link]()) {
Les attributs let lists = [Link];
[Link]('perso');
Les attributs if ([Link]()) {
// name:name value:titre
Les classes
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les classes
On peut récupérer les classes d’un élément et les modifier, en ajouter et en supprimer.
Les attributs
<style> <script>
</style>
<body>
</body>
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
[Link] = ‘#ccc’;
[Link] = ‘#ff0000’;
L’insertion
Javascript nous permet d’ajouter dynamiquement des éléments dans notre document.
Il faut procéder en 2 phases (voir 3), on va créer un noeud, (le remplir), puis l’insérer.
<body><p>Paragraphe initial</p></body>
<script>
// 1 creation d’un noeud vide
let newP1 = [Link](‘p’);
// remplissage de l’élément p
[Link] = ‘Premier paragraphe’;
// insertion dans le document au début
[Link](newP1);
</script>
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
L’insertion
// remplissage de l’élément p
[Link] = ‘Dernier <strong>paragraphe</strong>’;
L’insertion
L’insertion
L’insertion
Déplacer
Démo HTML
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Cloner et remplacer
des éléments dans le DOM
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Clonage
Elle accepte pour paramêtre true (avec ses enfants) ou false (seulement l’élément)
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Insertion à coté de
Pour insérer un élément « à coté » d’un autre élément, on peut utiliser la méthode :
[Link](‘où’, ‘quoi’)
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Insertion à coté de
Propriété Définition
beforebegin insère avant l’élément, juste avant <p> de p2
afterbegin insère dans l’élément, juste après <p> de p2, dans p2
beforeend insère dans l’élément, juste avant </p> de p2, dans p2
aftereend insère après l’élément, juste après </p> de p2
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Remplacement
Suppression
Conclusion
Les événements
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les délais
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
setInterval
Tout programme se stoppe lorsqu’il a exécuté tout son code. Si vous souhaitez qu’il continu à s’exécuter,
afin par exemple d’écouter des événements..., il faut lui spécifier de réaliser certaines opérations à un
intervalle défini.
Pour cela on utilise un minuteur, le minuteur prend en paramètres, un code a exécuté lorsque le délai est
dépassé, et un délai en milliseconde, il s’exécute a vie.
setInterval(() => {
[Link](«Retardée d’une seconde.»);
}, 1000)
// OU
setInterval(affiche, 1000);
function affiche() {
[Link](«Retardée d’une seconde.»);
}
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
setTimeout
Il existe une autre fonction, qui fait exactement la même chose, mais qu’une seule fois
setTimeout(function, delay);
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
clearInterval
clearInterval(intervalId);
clearInterval(timerId);
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les événements
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les événements
Un événement est une réaction (de javascript) à une action émise par l’utilisateur,
comme le click d’une souris, l’envoie d’un formulaire.
Le développeur ne gère pas l’événement, c’est javascript qui s’en charge, vous n’avez qu’à écouter
l’événement.
Pour cela il faut créer un écouteur «listener» sur l’élément à écouter, avec la méthode
[Link](‘event’, ‘callback’)
Les événements
[Link]
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les événements
<script>
const form = [Link](‘#subscribe’);
[Link](‘submit’,registerEmail);
function registerEmail(event) {
alert(‘form submit ’ + [Link]);
}
</script>
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les événements
Nous ne souhaitons pas de ce fonctionnement standard, pour cela, nous devons lui stipuler ne pas avoir
de «comportement par défaut»
[Link]();
Les événements
Il existe une autre méthode pour gérer les événements, les attributs html.
Ces méthodes sont dépréciées en «javascript pur», mais sachez qu’on les utilise en [Link].
Par exemple onclick, onsubmit, onchange ....
<script>
function registerEmail(event) {
[Link]();
alert(‘form submit ‘+[Link]);
}
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les événements
[Link](‘event’, ‘callback’)
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les événements
Quoi que vous fassiez, écoutez ou pas, l’événement va se produire, c’est javascript qui gère.
Votre rôle, et d’interceptez le comportement par défaut d’un événement en plaçant un écouteur, de
stopper le comportement standard, et d’exécuter votre propre code.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
L’orienté objet
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
L’orienté objet
La programmation orientée objet est une façon de concevoir un code autour du concept d’objets.
Un objet est une entité qui peut être vue comme indépendante et qui va contenir un ensemble de
propriétés (qui correspondent aux variables) et de méthodes (qui correspondent aux fonctions).
L’orienté objet
Objet littéral
Objet littéral
Tous ce que nous avons vu sur la manipulation des objets littéraux s’appliquent à tous les objets.
Si nous devons créer dynamiquement des objets, il serait plus pratique de créer un modèle à partir duquel on pourrait
créer dynamiquement des objets.
function User(name, age, email) { Reprenons notre exemple précédent, mais cette fois
[Link] = name,
[Link] = age, nous allons créer plusieurs utilisateurs, pour ce faire on
[Link] = email, va utiliser une fonction constructeur «User(...)», a
[Link] = function() { laquelle on va passer des paramètres afin de l’initialiser
alert(‘Hello, my name is ‘+[Link][0] Noter que cette fonction est écrite en Pascal Case
+ ‘ ‘ + [Link][1] + ‘, i am ‘ + [Link]+ ‘
years old.’);
} Pour créer un nouvel objet User que l’on va stocker dans
};
jerome, on utilise le mot clé «new». jerome et paul sont 2
let jerome = new User([‘jerome’, ‘borg’], 49, instances de User.
‘contact@[Link]’);
let paul = new User([‘paul’, ‘auchon’], 39, La création d’une nouvelle instance se nomme
‘paul@[Link]’); l’instanciation.
[Link]([Link]());
[Link]([Link]());
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
[Link] = ‘Giant’;
[Link] = function () { Ici on a défini une propriété et une méthode différente
alert([Link][0] + ‘ ride a ‘ + pour nos instances ‘jerome’ et ‘paul’
[Link]);
}
[Link]();
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Constructeur Object()
Dans les langages orientés objet utilisant des prototypes comme le JavaScript, tout est objet et il n’existe pas de
classes et l’héritage va se faire au moyen de prototypes.
Cette propriété prototype possède une valeur qui est elle-même un objet. On parlera donc de « prototype objet » ou
« d’objet prototype » pour parler de la propriété prototype.
Par défaut, la propriété prototype d’un constructeur ne contient que deux propriétés : une propriété constructor qui
renvoie vers le constructeur contenant le prototype et une propriété __proto__ qui contient elle-même de
nombreuses propriétés et méthodes.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Constructeur Object()
function User(name, age, email) { Nous avons défini la fonction de constructeur, puis nous
[Link] = name,
[Link] = age, ajoutons au prototype, la propriété size et la méthode
}; hello. De cette manière tous les objets créés auront
[Link] = 172;
[Link] = function() { accès aux méthodes et propriétés de prototype (qui est
alert(‘Hello, my name is ‘ + [Link][0] + une propriété).
‘ ‘ + [Link][1] + ‘, i am ‘ + [Link] + ‘
years old, and I am ‘ + [Link]/100 + ‘m
tall’); D’une manière générale, on définit les propriétés dans le
}
constructeur, et les méthodes dans le prototype du
let jerome = new User([‘jerome’, ‘borg’], 49); constructeur.
let paul = new User([‘paul’, ‘auchon’], 39);
[Link]([Link]());
[Link]([Link]());
[Link] = 185;
[Link]([Link]());
[Link](paul);
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Hiérarchie et héritage
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Souvent, nous allons devoir créer des objets relativement proche (d’un point de vue structure), plutôt
que de redéfinir systématiquement le constructeur (évitons le D.R.Y., Don’t Repeat Yourself), il va être
plus judicieux de créer un constructeur de base qui va contenir les propriétés et méthodes communes à
tous nos objets puis des constructeurs plus spécialisés qui vont hériter de ce premier constructeur.
Cela devrait être plus simple avec un exemple, nous avons une entreprise, qui a des employés, un comité
de direction (ce sont aussi des employé), et un pdg qui fait partie du comité de direction.
Chaque employé a un nom.
Le comité de direction a des RTT.
Le pdg a une prime annuelle.
En résumé,
employé : nom
cd : nom + RTT
pdg : nom + RTT + prime
Cet exemple est volontairement simpliste, c’est simplement pour mettre en avant l’héritage de propriété
et de méthode Démo HTML
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Notions avancées
sur les fonctions
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
- La déclaration de fonction
- L’expression de fonction
On créer une fonction que l’on stocke dans une variable, pour l’utiliser on appelle la variable avec ()
- L’expression de fonction
La plupart du temps, il est plus pratique d’utiliser une déclaration de fonction plutôt qu’une expression
de fonction. Car les fonctions déclarées sont immédiatement disponibles, alors que les expressions non.
function sum1(a,b) {
return a + b;
}
Le paramètre du reste
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Le paramètre du reste
Dans certains cas, on a besoin d’avoir un nombre variable de paramètre dans une fonction. Pour se faire
nous allons nous servir l’opérateur ... .
let a = 1; let b = 1; let c = 1; let d = 1;
function sum(...numbers) {
let total=0;
for (let number of numbers) {
total += number;
}
return total;
}
[Link](sum(a)); //1
[Link](sum(a, b));//2
[Link](sum(a, b, c));//3
[Link](sum(a, b, c, d));//4
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Le paramètre du reste
Les closures
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les closures
On appelle closure, «une fonction interne qui va pouvoir continuer d’accéder à des variables définies
dans la fonction externe à laquelle elle appartient même après que cette fonction externe ait été
exécutée.»
Les closures
Pour bien comprendre toute la puissance et l’intérêt des closures, il va falloir avant tout bien comprendre
la portée des variables et détailler le fonctionnement interne des fonctions.
Dans la première partie sur les fonctions, nous avons vu qu’une fonction pouvait accéder aux variables
définies dans la fonction en soi ainsi qu’à celles définies dans le contexte global.
En javascript, une fonction peut contenir une ou des fonction(s). La fonction «conteneur» est appelée
fonction «externe», la ou les fonctions contenue(s) sont appelées fonction «interne»
Les closures
[Link](bio());
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les closures
function compteur() {
let passage = 0; On créer une closure, qui stocke une variable le
[Link](count()); //0
[Link](count()); //1
[Link](count()); //2
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
L’asynchrone
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Synchrone
En informatique, on dit que deux opérations sont synchrones, lorsque la seconde attend que la première
soit finie pour démarrer;
function un() {
setTimeout(function () {
}, 5000);
[Link](‘end un’);
}
function deux() {
[Link](‘end deux’);
}
un(); // end un
deux();// end deux
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Synchrone
Le javascript est un langage synchrone, on voit bien dans notre exemple que malgré le temps
Dans certains cas, nous souhaiterions, pouvoir débuter une autre action, sans attendre la fin de l’action
Asynchrone
L’idée principale de l’asynchrone est que le reste du script puisse continuer à s’exécuter pendant qu’une
certaine opération plus longue ou demandant une réponse / valeur est en cours. Cela permet un
setTimeout(function () {
[Link](‘un’)
}, 5000);
[Link](‘deux’);
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Asynchrone
Javascript propose aussi plusieurs solutions dont les fonctions de rappel «callback».
C’est la méthode la plus «vieille» mais toujours utilisée par beaucoup de modules JavaScript.
Le principe de la callback est de la passer en paramètre d’une fonction asynchrone. Une fois que la
fonction asynchrone a fini sa tâche, elle va appeler notre fonction callback en lui passant un résultat.
Ainsi, le code que nous mettons dans notre fonction callback sera exécutée de manière asynchrone.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Asynchrone
function displayer(sum) {
setTimeout(function () {
[Link](‘sum:’+sum)
}, 5000);
}
calculator(5, 5, displayer);
[Link](‘suite’);
Dans cet exemple, on créer une fonction de calcul, qui fait appel à une fonction de callback pour
l’affichage.
On voit bien que le mot «suite» apparait avant le résultat de la somme.
Ne tenez pas compte du setTimeout, cette fonction est présente pour vous montrer qu’un certain temps
s’est écoulé.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les promesses
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les promesses
En 2015, cependant, JavaScript a intégré un nouvel outil dont l’unique but est la génération et la gestion
du code asynchrone : les promesses avec l’objet constructeur Promise. C’est à ce jour l’outil le plus
récent et le plus puissant fourni par le JavaScript nous permettant d’utiliser l’asynchrone dans nos
scripts.
Une « promesse » est donc un objet représentant l’état d’une opération asynchrone. Comme dans la vie
réelle, une promesse peut être soit en cours (on a promis de faire quelque chose mais on ne l’a pas
encore fait), soit honorée (on a bien fait la chose qu’on avait promis), soit rompue (on ne fera pas ce
qu’on avait promis et on a prévenu qu’on ne le fera pas).
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les promesses
Plutôt que d’attacher des fonctions de rappel à nos fonctions pour générer des comportements
asynchrones, nous allons créer ou utiliser des fonctions qui vont renvoyer des promesses et allons
attacher des fonctions de rappel aux promesses.
Les avantages des promesses par rapport à l’utilisation de simples fonctions de rappel pour gérer des
opérations asynchrones vont être notamment la possibilité de chainer les opérations asynchrones, la
garantie que les opérations vont se dérouler dans l’ordre voulu et une gestion des erreurs simplifiées.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les promesses
Une promesse en JavaScript est un objet qui représente l’état d’une opération asynchrone. Une
opération asynchrone peut être dans l’un des états suivants :
Les promesses
Nous allons pouvoir créer nos propres promesses, mais la majorité des opérations asynchrones qu’on va
vouloir réaliser en JavaScript vont déjà être pré-codées et fournies par des API.
Pour créer une promesse, on va utiliser la syntaxe new Promise() qui fait donc appel au constructeur
Promise.
Ce constructeur va prendre en argument une fonction qui va elle-même prendre deux autres fonctions
en arguments. La première sera appelée si la tâche asynchrone est effectuée avec succès tandis que la
seconde sera appelée si l’opération échoue.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les promesses
Si la promesse est tenue, la fonction resolve() sera appelée tandis que si la promesse est rompue la
fonction reject() va être appelée. Ces deux fonctions sont des fonctions prédéfinies en JavaScript et
nous n’avons donc pas besoin de les déclarer. Nous allons pouvoir passer un résultat en argument pour
chacune d’entre elles.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les promesses
function testPromesse() {
return new Promise((resolve, reject) => {
[Link](‘‘C’est fait’’);
// réussir une fois sur deux
if ([Link]() > .5) {
resolve(‘‘Réussite’’);
} else {
reject(‘‘Échec’’);
}
})
}
function resolveFunction(msg) {
[Link](msg);
}
function rejectFunction(msg) {
[Link](msg);
}
Async Await
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Async et Await
Le mot clef await est uniquement valide au sein de fonctions asynchrones définies avec async.
Il permet d’interrompre l’exécution d’une fonction asynchrone tant qu’une promesse n’est pas résolue ou
rejetée. La fonction asynchrone reprend ensuite puis renvoie la valeur de résolution.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Async et Await
try {
let result = await promise; //Attend que la promesse soit résolue ou rejetée
[Link](result);
} catch (error) {
[Link](error);
}
}
test(); // Ok ! DEMO HTML
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les cookies
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les cookies
Un cookie est un petit fichier qui ne contient généralement qu’une seule donnée et qui va être stocké
directement dans le navigateur d’un utilisateur.
Les cookies vont nous permettre d’enregistrer des informations à propos de l’utilisateur comme un
choix, par exemple : « j’accepte les cookies ».
On peut stocker plusieurs données dans un même cookie, le cookie peut avoir une taille maximale de
4000 octets.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Les cookies
On peut spécifier des options, comme l’accessibilité, généralement, le cookie est valable pour tout le site
[Link] = ‘darkmode=true; path=/’;
Les cookies
On peut également spécifier la durée de vie du cookie en milliseconde, dépassé cette durée, il sera
détruit, par exemple pour 1 jour
Les cookies
Pour supprimer un cookie, il faut le réécrire sans valeur avec une date d’expiration passée
[Link] = ‘darkmode=; expires=Thu, 01 Jan 1970 00:00:00 UTC’;
Web storage
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Web storage
L’Api Web Storage, permet de stocker des données sous forme de clé=valeur
La différence entre localstorage et sessionstorage, est qu’avec sessionstorage, les données seront
supprimées a la fermeture du navigateur et non avec localstorage.
Les objets localstorage et sessionstorage vont nous fournir les propriétés et méthodes suivantes :
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Web storage
Les objets localstorage et sessionstorage vont nous fournir les propriétés et méthodes suivantes :
Function Définition
setItem() permet de stocker une paire clef/valeur. Prend une clef et une valeur en arguments
getItem() permet d’obtenir une valeur liée à une clef. Prend une clef en argument
removeItem() permet de supprimer une paire clef/valeur. Prend une clef en argument
clear() permet de supprimer tous les objets de stockage. Ne prend pas d’argument
key() permet d’obtenir une clef située à une certaine position. Prend un index en
argument
length permet d’obtenir le nombre de données stockées
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Web storage
[Link](‘cookies’, true);
[Link](‘cookies’);
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Db Storage
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
DB storage
L’API IndexedDB est une API de stockage de données côté client qui va être utilisée pour stocker des
quantités importantes de données structurées.
Les opérations effectuées par IndexedDB sont réalisées de manière asynchrone, et ceci afin de ne pas
bloquer le reste de la page.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
DB storage
DB storage
Ouverture de connexion
C’est assez mécanique, on ouvre une connexion, et créer trois gestionnaires (maj, succès et erreur),
Objet de stockage
Les objets de stockage vont stocker les données, ils peuvent être considérés comme des tables d’un
SGBD.
DB storage
DB storage
Requêter
Avec IndexDB, on peut ajouter, modifier, supprimer des données de notre base de données.
Il faut d’abord créer une transaction (1), récupérer l’objet de stockage (2), requêter (3).
IDBObjectStore, nous fournit les méthodes suivantes :
- put() et add() pour modifier et ajouter des données
- get() et getAll() pour récupérer les données
- delete() et clear() pour supprimer des données
Démo HTML
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Json
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Json
Le json (Javascript Object Notation) est une structure de fichier qui permet de «sérialiser les objets en
tableaux». Cette structure est beaucoup utilisée, y compris dans d’autres langages de programmation.
On s’en sert pour échanger des données.
{ {
‘name’: ‘borg’, ‘name’: ‘dupont’,
‘firstname’: ’jerome’, ‘firstname’: ’michel’,
‘address’: { ‘address’: {
‘street1’: ‘rue ..’, ‘street1’: ‘rue ..’,
‘zip’: 37000, ‘zip’: 67000,
‘city’: ‘Tours’, ‘city’: ‘Somewhere’,
}, },
‘mails’: [ ‘mails’: [
‘mail1@[Link]’, ‘mail3@[Link]’,
‘mail2@[Link]’ ‘mail4@[Link]’
] ]
}, }
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Json
Ajax
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Ajax
Ajax «Asynchronous JavaScript and XML» correspond à un ensemble de techniques utilisant des
technologies diverses pour envoyer et récupérer des données vers et depuis un serveur de façon
asynchrone, c’est-à-dire sans avoir à recharger la page.
L’AJAX est aujourd’hui un terme générique utilisé pour désigner toute technique côté client (côté
navigateur) permettant d’envoyer et de récupérer des données depuis un serveur et de mettre à jour
dynamiquement le DOM sans nécessiter l’actualisation complète de la page.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Ajax
L’objet XMLHttpRequest a longtemps été, et est toujours dans une certaine mesure, au coeur de l’AJAX.
C’est cet objet qui permet le dialogue asynchrone (c’est-à-dire l’échange de données en arrière-plan)
avec le serveur.
Cet objet est cependant aujourd’hui délaissé au profit de l’API et de la méthode fetch() par la plupart
des applications modernes car cette dernière est jugée plus puissante et plus intuitive à utiliser.
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Fetch
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Fetch
L'API Fetch est une interface moderne qui vous permet de faire des requêtes HTTP aux serveurs à partir
de navigateurs Web.
L'API Fetch peut effectuer toutes les tâches comme le fait l’objet XMLHttpRequest (XHR).
Fetch
fetch() ne nécessite qu'un seul paramètre qui est l'URL de la ressource que vous souhaitez récupérer :
let response = fetch(url);
fetch() renvoie une Promesse afin que vous puissiez utiliser les méthodes then() et catch() :
fetch(url)
.then(response => {
// handle the response
})
.catch(error => {
// handle the error
});
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Fetch
Fetch
Lire la réponse
Si le contenu de la réponse est au format texte brut, vous pouvez utiliser la méthode text().
text() renvoie une Promise qui se résout avec le contenu complet de la ressource récupérée :
fetch('/[Link]')
.then(response => [Link]())
.then(data => [Link](data));
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Fetch
Lire la réponse
Fetch
Lire la réponse
En pratique, on utilise souvent le async/await avec fetch() comme celle-ci, et une réponse en json :
Fetch
L’objet Response fournit le code d'état et le texte d'état via les propriétés status et statusText.
Lorsqu'une requête aboutit, le code d'état est 200 et le texte d'état est OK :
Fetch
Si la ressource n’existe pas, c’est-à-dire que l’url n’existe pas le code de réponse sera 404.
Si la ressource génère une erreur sur le serveur, la réponse sera 500.
Si la ressource est redirigé, la réponse sera dans la famille des 300 à 309
[Link]
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Fetch
fetch() accepte un deuxième argument, qui est un objet. On va pouvoir définir les options suivantes :
Option Définition
headers les en-têtes qu’on souhaite ajouter à notre requête
body un corps qu’on souhaite ajouter à notre requête
un référant. Les valeurs possibles sont «about:client» (valeur par défaut), «» pour une
referrer absence de référant, ou une URL
referrerPolicy spécifie la valeur de l’en-tête HTTP du référent. Les valeurs possibles sont no-referrer-
when-downgrade (défaut), no-referrer, origin, origin-when-cross-origin et unsafe-url
mode spécifie le mode qu’on souhaite utiliser pour la requête. Les valeurs possibles sont
cors (défaut), no-cors et same-origin
L’ÉCOLE DES EXPERTS
MÉTIERS DE
L’INFORMATIQUE
Fetch
Fetch