Apprendre à développer avec JavaScript
Des bases à l'utilisation de frameworks 5e édition
Christian Vigouroux
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écessaire17
4. Positionnement du JavaScript face à d'autres technologies de développement web (HTML, CSS, PHP...)18
Chapitre 1-2
Développement à partir d'algorithmes
1. Présentation de la notion d'algorithme19
2. Notion de variable20
2.1 Présentation des notions de variable et de type20
2.2 Types de base et opérations associées21
2.3 Intérêt des types22
2.4 Utilisation des variables dans des expressions24
2.5 Tableau récapitulatif des opérateurs24
3. Manipulation des variables25
3.1 Nommage des variables25
3.2 Affectation26
3.3 Exercice n° 1 : Inversion du contenu de deux variables mémoire27
3.4 Affichage des résultats28
3.5 Exercice n° 2 : Surfaces de cercles30
3.6 Saisie au clavier31
3.7 Exercice n° 3 : Surface et volume d'une sphère32
4. Fonctions prédéfinies32
4.1 Exercice n° 4 : Affichage de la longueur d'un nom33
4.2 Exercice n° 5 : Détermination des initiales34
5. Traitements conditionnés36
5.1 Exercice n° 6 : Polynôme du second degré38
5.2 Exercice n° 7 : Libellé du mois en clair39
5.3 Exercice n° 8 : Libellé du mois en clair (Suivant... Finsuivant)41
6. Structures itératives42
6.1 Principe des itérations42
6.2 Structures itératives de base42
6.3 Exercice n° 9 : Moyenne de 10 nombres45
6.4 Exercice n° 10 : Moyenne d'une série de n nombres45
6.5 Exercice n° 11 : Plus Grand Commun Diviseur par la méthode des divisions successives48
6.6 Structure itérative Pour50
6.7 Exercice n° 12 : Calcul de la moyenne de 10 nombres51
6.8 Exercice n° 13 : Décompte du nombre de voyelles dans un mot52
7. Tableaux à dimension unique54
7.1 Exercice n° 14 : Décompte des nombres pairs dans un tableau55
8. Tableaux à dimensions multiples56
8.1 Exercice n° 15 : Mini-tableur56
9. Procédures, fonctions et passage de paramètres58
9.1 Les objectifs58
9.2 Les procédures58
9.3 Exercice n° 16 : Appel d'une procédure avec passage de paramètres59
9.4 Les fonctions60
9.5 Exercice n° 17 : Appel d'une fonction avec passage de paramètres61
Partie 2 : Bien débuter avec JavaScript
Chapitre 2-1
Bases du langage JavaScript
1. Méthodologie d'apprentissage63
2. Variables (déclaration et typage)64
2.1 Exercice n° 2 : Surfaces de cercles64
2.2 Exercice n° 3 : Surface et volume d'une sphère70
2.3 Exercice n° 4 : Nombre de lettres d'un mot72
2.4 Exercice n° 5 : Détermination des initiales73
Chapitre 2-2
Conditionnement des traitements
1. Présentation de la syntaxe75
2. Exemples77
2.1 Exercice n° 6 : Polynôme du second degré77
2.2 Exercice n° 8 : Impression du libellé d'un mois78
Chapitre 2-3
Traitements itératifs (boucles)
1. Présentation de la syntaxe des boucles81
2. Boucle while82
2.1 Syntaxe82
2.2 Exercice n° 9 : Moyenne de 10 nombres saisis au clavier82
2.3 Exercice n° 10 : Moyenne d'une série de n nombres saisis au clavier83
3. Boucle do while85
3.1 Syntaxe85
3.2 Exercice n° 11 : Moyenne d'une série de n nombres saisis au clavier85
4. Boucle for86
4.1 Syntaxe86
4.2 Exercice n° 12 : Moyenne d'une série de 10 nombres saisis au clavier.87
4.3 Exercice n° 13 : Décompte du nombre de voyelles dans un mot88
Chapitre 2-4
Tableaux
1. Tableaux à dimension unique91
1.1 Syntaxe91
1.2 Exercice n° 14 : Décompte des nombres pairs dans un tableau92
2. Tableaux à dimensions multiples94
2.1 Syntaxe94
2.2 Exercice n° 15 : Mini-tableur95
Chapitre 2-5
Procédures et fonctions
1. Les procédures97
1.1 Syntaxe98
1.2 Exercice n° 16 : Appel d'une procédure avec passage de paramètres98
2. Les fonctions100
2.1 Syntaxe100
2.2 Exercice n° 17 Appel d'une fonction avec passage de paramètres100
Partie 3 : Approche POO sous JavaScript
Chapitre 3-1
Approche « objet » en JavaScript
1. Introduction103
2. Programmation orientée objet au travers d'exemples103
2.1 Séquence 1 : Déclaration des objets JavaScript en méthode « Inline »104
2.2 Séquence 2 : Création des objets JavaScript par constructeur105
2.3 Séquence 3 : Variables privées dans une instance d'objet106
2.4 Séquence 4 : Passage de paramètre (s) à un constructeur107
2.5 Séquence 5 : Non-partage des méthodes par les instances d'objets107
2.6 Séquence 6 : Notion de prototype109
2.7 Séquence 7 : Surcharge d'une méthode110
2.8 Séquence 8 : Extension d'un prototype111
2.9 Séquence 9 : Mécanisme de l'héritage112
2.10 Séquence 10 : Limite de l'héritage de la séquence n° 9114
2.11 Séquence 11 : Une seconde limite à notre héritage115
Chapitre 3-2
Objets de base de JavaScript
1. Présentation117
2. Les objets de base117
2.1 Objet Array118
2.2 Objet Date118
2.3 Objet Math125
2.4 Objet window128
2.5 Objet navigator137
2.6 Objet String139
Chapitre 3-3
Les nouveautés d'EcmaScript6
1. Présentation générale145
2. Apports au niveau de la Programmation Orientée Objet146
2.1 Notion de prototype146
2.2 Surcharge d'une méthode149
2.3 Extension de prototype152
2.4 Héritage154
2.5 Premier exemple POO en EcmaScript 6158
2.6 Héritage en EcmaScript161
2.7 Méthodes getter, setter et static en EcmaScript 6164
3. Fonctions fléchées (arrow functions)169
3.1 Avantages des fonctions fléchées169
3.2 Exemple169
4. Structures Map, Set et boucle for of174
4.1 Présentation générale174
4.2 Exemple175
5. Portée des variables (var ou let)183
5.1 Présentation générale183
5.2 Exemple183
6. Promesses (promise)187
6.1 Présentation générale187
6.2 Exemple187
7. Déstructuration191
7.1 Présentation générale191
7.2 Exemple191
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 JavaScript195
1.1 Contrôle de saisie sur un champ texte195
1.2 Contrôle de numéricité d'une saisie dans un champ texte201
1.3 Contrôle de caractères alphabétiques d'une saisie dans un champ texte204
1.4 Contrôle de caractères alphabétiques et numériques d'une saisie dans un champ texte204
1.5 Contrôle de longueur d'une saisie dans un champ texte205
1.6 Contrôle de saisie sur une adresse e-mail206
1.7 Contrôle d'un choix dans une liste déroulante (version simplifiée)206
1.8 Contrôle d'un choix dans une liste déroulante (version étendue)209
1.9 Contrôle d'un choix par bouton radio212
1.10 Contrôle d'un choix par case à cocher216
Chapitre 4-2
Modèle DOM
1. Introduction221
1.1 Définition de DOM221
1.2 Définition de l'arborescence222
2. Apprentissage du modèle DOM224
2.1 Script « Hello World ! »224
2.2 Différence entre write et writeln225
2.3 Gestion des liens hypertextes226
2.4 Gestion des images228
2.5 Gestion des formulaires et de leurs balises230
2.6 Gestion des ancres232
2.7 Gestion de la navigation entre pages web234
2.8 Affichage de caractéristiques générales du document239
2.9 Gestion des boutons dans les formulaires241
2.10 Gestion des tableaux (balise HTML table)250
Chapitre 4-3
Exploration de flux XML via DOM
1. Notion de flux XML279
2. Exemples280
2.1 Exemple 1 : Affichage d'un contenu d'e-mail codé en XML280
2.2 Exemple 2 : Liste des marques des voitures (fichier voitures. xml)283
2.3 Exemple 3 : Liste des marques des voitures avec une boucle285
2.4 Exemple 4 : Liste des noeuds rattachés à la racine287
2.5 Exemple 5 : Liste des champs (noeuds) de chaque voiture289
2.6 Exemple 6 : Remplacement d'une valeur de noeud291
2.7 Exemple 7 : Accès aux attributs292
2.8 Exemple 8 : Accès à un noeud parent293
2.9 Exemple 9 : Parcours arrière des noeuds294
2.10 Exemple 10 : Remplacement systématique d'une valeur d'attribut295
2.11 Exemple 11 : Conversion XML en HTML296
2.12 Exemple 12 : Suppression d'un noeud dans un flux XML298
Partie 5 : Cookies et mécaniques de persistance
Chapitre 5-1
Gestion des cookies en JavaScript
1. Notion de cookie303
2. Ecriture d'un cookie304
3. Lecture d'un cookie306
4. Suppression d'un cookie308
Chapitre 5-2
Stockage local de données
1. Présentation générale des solutions309
1.1 Stockage par sessionS to rage310
1.2 Stockage par localStorage310
2. Mise en oeuvre du Web Storage au travers d'exemples311
2.1 Exemple 1 : Stockage par localStorage de chaînes de caractères311
2.2 Exemple 2 : Stockage dans le localStorage d'un objet JavaScript319
Chapitre 5-3
Stockage distant (Ajax - PHP - MySQL - XML)
1. Présentation générale de la solution329
2. Mise en oeuvre du stockage distant au travers d'exemples330
2.1 Exemple 1 : Accès Ajax sur BDD MySQL (liste de l'ensemble des voitures)331
2.2 Exemple 2 : Accès MySQL via Ajax352
Chapitre 5-4
Stockage distant (Ajax - PHP - MySQL - JSON)
1. Présentation générale de la solution359
2. Mise en oeuvre du stockage distant au travers d'exemples361
2.1 Exemple 1 : Présentation du système de notation JSON361
2.2 Exemple 2 : Lecture d'un fichier JSON via XMLHttpRequest365
2.3 Exemple 3 : Lecture d'un fichier JSON via XMLHttpRequest et un script serveur en PHP371
2.4 Exemple 4 : Lecture d'une table MySQL via XMLHttpRequest (serveur PHP et flux JSON)373
2.5 Exemple 5 : Recodage de l'exemple 4 avec une liste déroulante378
Partie 6 : Géolocalisation, dessin et graphiques de gestion
Chapitre 6-1
Géolocalisation
1. Principe de la géolocalisation383
2. Exemples d'applications de géolocalisation384
2.1 Exemple 1 : Affichage de la carte de l'Ouest de la France384
2.2 Exemple 2 : Affichage de la carte de l'Ouest de la France (marqueur)390
2.3 Exemple 3 : Affichage de la carte de l'Ouest de la France (marqueur et cercles de population)393
2.4 Exemple 4 : Affichage de la carte de l'Ouest de la France (informations météorologiques)396
2.5 Exemple 5 : Affichage de la carte de Rennes Centre-Sud (avec photo des sites importants)403
2.6 Exemple 6 : Affichage de la carte de Rennes (Street View)404
Chapitre 6-2
Dessin (HTML5 CANVAS)
1. Présentation de l'API HTML5 CANVAS409
2. Exemples d'applications de l'élément <canvas>410
2.1 Exemple 1 : Tracé d'un simple carré410
2.2 Exemple 2 : Tracé d'une grille de TicTacToe413
2.3 Améliorations possibles sur le jeu du TicTacToe420
Chapitre 6-3
Graphiques de gestion
1. Différentes solutions de conception de graphiques de gestion421
2. Exemples d'utilisation des API Google Charts421
2.1 Exemple 1 : Tracé d'un histogramme422
2.2 Exemple 2 : Tracé d'un graphique en secteurs427
2.3 Exemple 3 : Tracé d'une carte429
Partie 7 : Frameworks JavaScript
Chapitre 7-1
Positionnement des frameworks JavaScript
1. Présentation générale des frameworks JavaScript433
1.1 Frameworks « front-end »433
1.2 Frameworks « back-end »434
1.3 Solutions de développement « hybride »434
2. Les frameworks Node. js, Svelte, React et React Native435
Chapitre 7-2
Installation de Node. js
1. Présentation du framework Node. js437
2. Installation du framework Node. js438
Chapitre 7-3
Framework Svelte
1. Présentation du framework Svelte447
2. Site svelte. dev448
3. Création locale d'un projet Svelte451
4. Installation de Microsoft Visual Studio Code452
5. Projets Svelte453
5.1 « eni_svelte_01 » - Première application453
5.2 « eni_svelte_02 » - Importance des commentaires459
5.3 « eni_svelte_03 » - Mise en place d'une image.461
5.4 « eni_svelte_04 » - Intégration de balises HTML463
5.5 « eni_svelte_05 » - Un premier bouton465
5.6 « eni_svelte_06 » - Le rôle du $ dans les formules467
5.7 « eni_svelte_07 » - Champs de saisie469
5.8 « eni_svelte_08 » - Saisie avec curseur472
5.9 « eni_svelte_09 » - Cases à cocher474
5.10 « eni_svelte_10 » - Boutons « radio »477
5.11 « eni_svelte_l1 » -Liste480
5.12 « eni_svelte_12 » -Liste et boutons « radio »482
5.13 « eni_svelte_13 » -Boutons Svelte Materiality484
5.14 « eni_svelte_14 » -Liste déroulante Svelte Materiality486
5.15 « eni_svelte_15 » -Switches Svelte Materiality488
Chapitre 7-4
Framework React
1. Présentation de React491
2. Création locale d'un projet React492
3. Projets React basiques493
3.1 « eni_react_bases_01 »493
3.2 « eni_react_bases_02 »499
3.3 « eni_react_bases_03 »500
3.4 « eni_react_bases_04 »503
3.5 « eni_react_bases_05 »506
3.6 « eni_react_bases_06 »510
4. Les props React513
4.1 « eni_react_props_01 »513
4.2 « eni_react_props_02 »515
4.3 « eni_react_props_03 »517
5. Les librairies tierces pour React519
5.1 « eni_react_material-ui_table_01 »520
5.2 « eni_react_material-ui_table_02 »523
5.3 « eni_react_material-ui_table_03 »526
5.4 « eni_react_recharts_01 »529
5.5 « eni_react_recharts_02 »533
5.6 « eni_react_recharts_03 »536
6. Lecture de fichiers JSON sous React539
6.1 Différents types de flux JSON539
6.2 « eni_react_lecture_json_local »540
7. Interactions avec un serveur PHP-MySQL548
7.1 « eni_react_php_mysql_01 »548
7.2 « eni_react_php_mysql_02 »555
7.3 « eni_react_php_mysql_03 »570
7.4 « eni_react_php_mysql_04 »574
7.5 « eni_react_php_mysql_05 »584
8. La navigation sous React (routage)589
Chapitre 7-5
Framework React Native
1. Approches de développement pour périphériques mobiles595
1.1 Développements web, natif et hybride595
1.1.1 Applications web596
1.1.2 Applications natives596
1.1.3 Applications hybrides597
1.2 Les trois principales plateformes598
1.2.1 Apple iOS598
1.2.2 Android599
1.2.3 Windows Phone, Windows 10 Mobile599
2. Présentation du framework React Native599
3. Projets React Native601
3.1 Application « eni_react_native_helloworld »601
3.2 Application « eni_react_native_list_view »618
3.3 Application « eni_react_native_input_text »623
3.4 Application « eni_react_native_picker_basique »629
3.5 Application « eni_react_native_hook »633
3.6 Application « eni_react_native_php_mysql »637
3.7 Présentation d'une application CRUD PHP-MySQL complète643
3.8 Application « eni_react_native_villes_ajout »644
3.9 Application « eni_react_native_villes_liste »653
3.10 Application « eni_react_native_villes_modification »658
3.11 Application « eni_react_native_villes_suppression »669
Chapitre 7-6
Framework Vue3. js
1. Présentation de Vue3. js675
1.1 Points communs entre React. js et Vue3. js675
1.2 Les points forts de Vue3. js676
1.3 Les points faibles de Vue3. js677
2. Applications basiques Vue3. js677
2.1 Application « eni_vue3js_liste_voitures_01. html »677
2.2 Application « eni_vue3js_liste_voitures_02. html »680
2.3 Application « eni_vue3js_liste_voitures_03. html »681
2.4 Application « eni_vue3js_liste_voitures_04. html »682
2.5 Application « eni_vue3js_liste_voitures_05. html »685
2.6 Application « eni_vue3js_liste_voitures_06. html »687
2.7 Application « eni_vue3js_liste_voitures_07. html »691
2.8 Application « eni_vue3js21iste_voitures_08. html »696
2.9 Application « eni_vue3js_liste_voitures_09. html »698
3. Applications Vue3. js couplées avec MySQL707
3.1 Content Delivery Network (CDN)708
3.2 Node. js Package Manager (NPM)708
3.3 Interface en ligne de commandes (CLI)710
3.4 Application « eni_vue3js_voitures_mysql_l »710
3.4.1 Création de l'application dans un sous-répertoire710
3.4.2 Lancement de l'application712
3.4.3 Modifier les scripts générés (squelette) par le template712
3.5 Application « eni_vue3js_voitures_mysql_2 »726
3.6 Application « eni_vue3js_voitures_mysql_3 »732
3.7 Application « eni_vue3js_voitures_mysql_4 »739
Partie 8 : JavaScript et l'intelligence Artificielle
Chapitre 8-1
Mise en oeuvre de la librairie Math. js
1. Introduction747
2. Application « eni_mathjs_01. html » - Statistiques basiques sur une matrice 3*3747
3. Application « eni_mathjs_02. html » - Statistiques Iris (échantillon partiel)750
4. Application « eni_mathjs_03. html » - Statistiques Iris (échantillon complet)759
5. Application « eni_mathjs_04. html » - Régression linéaire Iris (échantillon partiel)766
Chapitre 8-2
Mise en oeuvre de la librairie TensorFlow. js
1. Algorithme de classification automatique777
2. Application « eni_classification_iris. html »778
Index791