Apprendre à développer avec JavaScript
Des bases à l'utilisation de frameworks
4e édition
Éditions Eni
Partie 1 : Présentation de JavaScript et programmation à partir d'algorithmes
Chapitre 1-1
Présentation du langage JavaScript
1. Définition et rapide historique15
2. Prérequis pour un apprentissage aisé du langage17
3. Outillage nécessaire18
4. Positionnement du JavaScript face à d'autres technologies de développement web (HTML, CSS, PHP...)19
Chapitre 1-2
Développement à partir d'algorithmes
1. Présentation de la notion d'algorithme21
2. Notion de variable23
2.1 Présentation des notions de variable et de type23
2.2 Types de base et opérations associées24
2.3 Intérêt des types26
2.4 Utilisation des variables dans des expressions27
2.5 Tableau récapitulatif des opérateurs27
3. Manipulation des variables29
3.1 Nommage des variables29
3.2 Affectation30
3.3 Exercice n°1 : Inversion du contenu de deux variables mémoire31
3.4 Affichage des résultats32
3.5 Exercice n°2 : Surfaces de cercles35
3.6 Saisie au clavier36
3.7 Exercice n°3 : Surface et volume d'une sphère37
4. Fonctions prédéfinies38
4.1 Exercice n°4 : Affichage de la longueur d'un nom38
4.2 Exercice n°5 : Détermination des initiales39
5. Traitements conditionnés42
5.1 Exercice n°6 : Polynôme du second degré44
5.2 Exercice n°7 : Libellé du mois en clair46
5.3 Exercice n°8 : Libellé du mois en clair (Suivant ... Finsuivant)49
6. Structures itératives50
6.1 Principe des itérations50
6.2 Structures itératives de base50
6.3 Exercice n°9 : Moyenne de 10 nombres53
6.4 Exercice n°10 : Moyenne d'une série de n nombres54
6.5 Exercice n°11 : Plus Grand Commun Diviseur par la méthode des divisions successives57
6.6 Structure itérative Pour59
6.7 Exercice n°12 : Calcul de la moyenne de 10 nombres61
6.8 Exercice n°13 : Décompte du nombre de voyelles dans un mot62
7. Tableaux à dimension unique64
7.1 Exercice n°14 : Décompte des nombres pairs dans un tableau65
8. Tableaux à dimensions multiples67
8.1 Exercice n°15 : Mini-tableur67
9. Procédures, fonctions et passage de paramètres69
9.1 Les objectifs69
9.2 Les procédures70
9.3 Exercice n°16 : Appel d'une procédure avec passage de paramètres70
9.4 Les fonctions73
9.5 Exercice n°17 : Appel d'une fonction avec passage de paramètres74
Partie 2 : Bien débuter avec JavaScript
Chapitre 2-1
Bases du langage JavaScript
1. Méthodologie d'apprentissage77
2. Variables (déclaration et typage)78
2.1 Exercice n°2 : Surfaces de cercles78
2.2 Exercice n°3 : Surface et volume d'une sphère85
2.3 Exercice n°4 : Nombre de lettres d'un mot88
2.4 Exercice n°5 : Détermination des initiales88
Chapitre 2-2
Conditionnement des traitements
1. Présentation de la syntaxe91
2. Exemples93
2.1 Exercice n°6 : Polynôme du second degré93
2.2 Exercice n°8 : Impression du libellé d'un mois94
Chapitre 2-3
Traitements itératifs (boucles)
1. Présentation de la syntaxe des boucles97
2. Boucle while98
2.1 Syntaxe98
2.2 Exercice n°9 : Moyenne de 10 nombres saisis au clavier99
2.3 Exercice n°10 : Moyenne d'une série de n nombres saisis au clavier100
3. Boucle do while101
3.1 Syntaxe101
3.2 Exercice n°11 : Moyenne d'une série de n nombres saisis au clavier102
4. Boucle for103
4.1 Syntaxe103
4.2 Exercice n°12 : Moyenne d'une série de 10 nombres saisis au clavier104
4.3 Exercice n°13 : Décompte du nombre de voyelles dans un mot105
Chapitre 2-4
Tableaux
1. Tableaux à dimension unique107
1.1 Syntaxe107
1.2 Exercice n°14 : Décompte des nombres pairs dans un tableau109
2. Tableaux à dimensions multiples110
2.1 Syntaxe110
2.2 Exercice n°15 : Mini-tableur111
Chapitre 2-5
Procédures et fonctions
1. Les procédures115
1.1 Syntaxe116
1.2 Exercice n°16 : Appel d'une procédure avec passage de paramètres116
2. Les fonctions118
2.1 Syntaxe118
2.2 Exercice n°17 : Appel d'une fonction avec passage de paramètres119
Partie 3 : Approche POO sous JavaScript
Chapitre 3-1
Approche « objet » en JavaScript
1. Introduction121
2. Programmation orientée objet au travers d'exemples122
2.1 Séquence 1 : Déclaration des objets JavaScript en méthode « Inline »122
2.2 Séquence 2 : Création des objets JavaScript par constructeur123
2.3 Séquence 3 : Variables privées dans une instance d'objet125
2.4 Séquence 4 : Passage de paramètre(s) à un constructeur126
2.5 Séquence 5 : Non-partage des méthodes par les instances d'objets127
2.6 Séquence 6 : Notion de prototype128
2.7 Séquence 7 : Surcharge d'une méthode130
2.8 Séquence 8 : Extension d'un prototype131
2.9 Séquence 9 : Mécanisme de l'héritage132
2.10 Séquence 10 : Limite de l'héritage de la séquence n°9134
2.11 Séquence 11 : Une seconde limite à notre héritage135
Chapitre 3-2
Objets de base de JavaScript
1. Présentation137
2. Les objets de base138
2.1 Objet Array138
2.2 Objet Date138
2.3 Objet Math147
2.4 Objet window150
2.5 Objet navigator160
2.6 Objet String162
Chapitre 3-3
Les nouveautés d'EcmaScript 6
1. Présentation générale169
2. Apports au niveau de la Programmation Orientée Objet170
2.1 Notion de prototype170
2.2 Surcharge d'une méthode173
2.3 Extension de prototype176
2.4 Héritage179
2.5 Premier exemple POO en EcmaScript 6184
2.6 Héritage en EcmaScript187
2.7 Méthodes getter, setter et static en EcmaScript 6190
3. Fonctions fléchées (arrow functions)195
3.1 Avantages des fonctions fléchées195
3.2 Exemple196
4. Structures Map, Set et boucle for of201
4.1 Présentation générale201
4.2 Exemple202
5. Portée des variables (var ou let)211
5.1 Présentation générale211
5.2 Exemple211
6. Promesses (promise)215
6.1 Présentation générale215
6.2 Exemple215
7. Déstructuration220
7.1 Présentation générale220
7.2 Exemple220
Partie 4 : Gestion de formulaire et modèle DOM
Chapitre 4-1
Saisie de données via des formulaires
1. Pilotage des contrôles de saisie via JavaScript225
1.1 Contrôle de saisie sur un champ texte225
1.2 Contrôle de numéricité d'une saisie dans un champ texte232
1.3 Contrôle de caractères alphabétiques d'une saisie dans un champ texte236
1.4 Contrôle de caractères alphabétiques et numériques d'une saisie dans un champ texte236
1.5 Contrôle de longueur d'une saisie dans un champ texte237
1.6 Contrôle de saisie sur une adresse e-mail238
1.7 Contrôle d'un choix dans une liste déroulante (version simplifiée)239
1.8 Contrôle d'un choix dans une liste déroulante (version étendue)242
1.9 Contrôle d'un choix par bouton radio245
1.10 Contrôle d'un choix par case à cocher249
Chapitre 4-2
Modèle DOM
1. Introduction253
1.1 Définition de DOM253
1.2 Définition de l'arborescence254
2. Apprentissage du modèle DOM257
2.1 Script « Hello World ! »257
2.2 Différence entre write et writeln258
2.3 Gestion des liens hypertextes260
2.4 Gestion des images261
2.5 Gestion des formulaires et de leurs balises264
2.6 Gestion des ancres266
2.7 Gestion de la navigation entre pages web269
2.8 Affichage de caractéristiques générales du document274
2.9 Gestion des boutons dans les formulaires276
2.10 Gestion des tableaux (balise HTML table)286
Chapitre 4-3
Exploration de flux XML via DOM
1. Notion de flux XML315
2. Exemples316
2.1 Exemple 1 : Affichage d'un contenu d'e-mail codé en XML316
2.2 Exemple 2 : Liste des marques des voitures (fichier voitures.xml)320
2.3 Exemple 3 : Liste des marques des voitures avec une boucle322
2.4 Exemple 4 : Liste des noeuds rattachés à la racine324
2.5 Exemple 5 : Liste des champs (noeuds) de chaque voiture326
2.6 Exemple 6 : Remplacement d'une valeur de noeud329
2.7 Exemple 7 : Accès aux attributs330
2.8 Exemple 8 : Accès à un noeud parent331
2.9 Exemple 9 : Parcours arrière des noeuds332
2.10 Exemple 10 : Remplacement systématique d'une valeur d'attribut333
2.11 Exemple 11 : Conversion XML en HTML335
2.12 Exemple 12 : Suppression d'un noeud dans un flux XML337
Partie 5 : Cookies et mécanismes de persistance
Chapitre 5-1
Gestion des cookies en JavaScript
1. Notion de cookie341
2. Écriture d'un cookie342
3. Lecture d'un cookie344
4. Suppression d'un cookie346
Chapitre 5-2
Stockage local de données
1. Présentation générale des solutions349
1.1 Stockage par sessionStorage350
1.2 Stockage par localStorage350
2. Mise en oeuvre du Web Storage au travers d'exemples351
2.1 Exemple 1 : Stockage par localStorage de chaînes de caractères351
2.2 Exemple 2 : Stockage dans le localStorage d'un objet JavaScript361
Chapitre 5-3
Stockage distant (Ajax - PHP - MySQL - XML)
1. Présentation générale de la solution371
2. Mise en oeuvre du stockage distant au travers d'exemples372
2.1 Exemple 1 : Accès Ajax sur BDD MySQL (liste de l'ensemble des voitures)373
2.2 Exemple 2 : Accès MySQL via Ajax399
Chapitre 5-4
Stockage distant (Ajax - PHP - MySQL - JSON)
1. Présentation générale de la solution407
2. Mise en oeuvre du stockage distant au travers d'exemples409
2.1 Exemple 1 : Présentation du système de notation JSON409
2.2 Exemple 2 : Lecture d'un fichier JSON via XMLHttpRequest414
2.3 Exemple 3 : Lecture d'un fichier JSON via XMLHttpRequest et un script serveur en PHP420
2.4 Exemple 4 : Lecture d'une table MySQL via XMLHttpRequest (serveur PHP et flux JSON)422
2.5 Exemple 5 : Recodage de l'exemple 4 avec une liste déroulante428
Partie 6 : Géolocalisation, dessin et graphiques de gestion
Chapitre 6-1
Géolocalisation
1. Principe de la géolocalisation433
2. Exemples d'applications de géolocalisation434
2.1 Exemple 1 : Affichage de la carte de l'Ouest de la France434
2.2 Exemple 2 : Affichage de la carte de l'Ouest de la France (marqueur)441
2.3 Exemple 3 : Affichage de la carte de l'Ouest de la France (marqueur et cercles de population)444
2.4 Exemple 4 : Affichage de la carte de l'Ouest de la France (informations météorologiques)447
2.5 Exemple 5 : Affichage de la carte de Rennes Centre-Sud (avec photo des sites importants)454
2.6 Exemple 6 : Affichage de la carte de Rennes (Street View)456
Chapitre 6-2
Dessin (HTML5 CANVAS)
1. Présentation de l'API HTML5 CANVAS461
2. Exemples d'applications de l'élément <canvas>462
2.1 Exemple 1 : Tracé d'un simple carré462
2.2 Exemple 2 : Tracé d'une grille de TicTacToe466
2.3 Améliorations possibles sur le jeu du TicTacToe473
Chapitre 6-3
Graphiques de gestion
1. Différentes solutions de conception de graphiques de gestion475
2. Exemples d'utilisation des API Google Charts476
2.1 Exemple 1 : Tracé d'un histogramme476
2.2 Exemple 2 : Tracé d'un graphique en secteurs482
2.3 Exemple 3 : Tracé d'une carte485
Partie 7 : Frameworks JavaScript
Chapitre 7-1
Positionnement des frameworks JavaScript
1. Présentation générale des frameworks JavaScript489
1.1 Frameworks « front-end »490
1.2 Frameworks « back-end »490
1.3 Solutions de développement « hybride »491
2. Les frameworks Node.js, Svelte, React et React Native491
Chapitre 7-2
Installation de Node.js
1. Présentation du framework Node.js493
2. Installation du framework Node.js495
Chapitre 7-3
Framework Svelte
1. Présentation du framework Svelte503
2. Site svelte.dev504
3. Création locale d'un projet Svelte507
4. Installation de Microsoft Visual Studio Code509
5. Projets Svelte510
5.1 « eni_svelte_01 » - Première application510
5.2 « eni_svelte_02 » - Importance des commentaires517
5.3 « eni_svelte_03 » - Mise en place d'une image519
5.4 « eni_svelte_04 » - Intégration de balises HTML521
5.5 « eni_svelte_05 » - Un premier bouton523
5.6 « eni_svelte_06 » - Le rôle du $ dans les formules526
5.7 « eni_svelte_07 » - Champs de saisie528
5.8 « eni_svelte_08 » - Saisie avec curseur531
5.9 « eni_svelte_09 » - Cases à cocher534
5.10 « eni_svelte_10 » - Boutons « radio »537
5.11 « eni_svelte_11 » - Liste539
5.12 « eni_svelte_12 » - Liste et boutons « radio »541
5.13 « eni_svelte_13 » - Boutons Svelte Materialify544
5.14 « eni_svelte_14 » - Liste déroulante Svelte Materialify546
5.15 « eni_svelte_15 » - Switches Svelte Materialify549
5.16 « eni_svelte_16 » - Première application Sapper-MySQL551
5.17 « eni_svelte_17 » - Liste déroulante Sapper-MySQL568
5.18 « eni_svelte_18 » - Ajout d'un sport via Sapper-MySQL571
5.19 « eni_svelte_19 » - Mise à jour Sapper-MySQL578
5.20 « eni_svelte_20 » - Suppression Sapper-MySQL584
Chapitre 7-4
Framework React
1. Présentation de React589
2. Création locale d'un projet React590
3. Projets React basiques591
3.1 « eni_react_bases_01 »592
3.2 « eni_react_bases_02 »598
3.3 « eni_react_bases_03 »600
3.4 « eni_react_bases_04 »603
3.5 « eni_react_bases_05 »606
3.6 « eni_react_bases_06 »611
4. Les props React614
4.1 « eni_react_props_01 »614
4.2 « eni_react_props_02 »616
4.3 « eni_react_props_03 »618
5. Les librairies tierces pour React621
5.1 « eni_react_material-ui_table_01 »622
5.2 « eni_react_material-ui_table_02 »625
5.3 « eni_react_material-ui_table_03 »629
5.4 « eni_react_recharts_01 »632
5.5 « eni_react_recharts_02 »637
5.6 « eni_react_recharts_03 »641
6. Lecture de fichiers JSON sous React643
6.1 Différents types de flux JSON643
6.2 « eni_react_lecture_json_local »644
7. Interactions avec un serveur PHP-MySQL653
7.1 « eni_react_php_mysql_01 »654
7.2 « eni_react_php_mysql_02 »661
7.3 « eni_react_php_mysql_03 »679
7.4 « eni_react_php_mysql_04 »683
7.5 « eni_react_php_mysql_05 »694
8. La navigation sous React (routage)700
Chapitre 7-5
Framework React Native
1. Approches de développement pour périphériques mobiles705
1.1 Développements web, natif et hybride706
1.1.1 Applications web706
1.1.2 Applications natives707
1.1.3 Applications hybrides708
1.2 Les trois principales plateformes709
1.2.1 Apple iOS709
1.2.2 Android709
1.2.3 Windows Phone, Windows 10 Mobile710
2. Présentation du framework React Native710
3. Projets React Native712
3.1 Application « eni_react_native_helloworld »713
3.2 Application « eni_react_native_list_view »730
3.3 Application « eni_react_native_input_text »736
3.4 Application « eni_react_native_picker_basique »741
3.5 Application « eni_react_native_hook »746
3.6 Application « eni_react_native_php_mysql »751
Index757