JavaScript
Développez efficacement
4e Édition
Editions ENI
Avant-propos
Chapitre1
Bien démarrer vos projets
1. Choisir votre environnement de développement15
1.1 Introduction15
1.2 NetBeans18
1.3 Visual Studio Community19
1.4 WebStorm21
1.5 Bilan.22
2. Organiser votre code23
2.1 Séparer le code de la présentation23
2.2 Chargement en pied de page27
2.3 Chargement de script par le cache du navigateur28
3. Portée des variables et fonctions32
3.1 Portée des variables32
3.2 Portée des variables dans une fonction34
4. Optimisation de la portée35
4.1 Limiter le contexte global35
4.2 Fonction anonyme36
4.3 Fermeture38
5. Simplifier vos expressions39
5.1 L'opérateur | |39
5.2 L'opérateur &&41
5.3 Comparaison42
5.4 Paramètres variants44
5.5 Extension de type45
5.5.1 prototype45
5.5.2 Array46
5.5.3 String47
5.5.4 Function48
5.5.5 Object49
6. Passage au mode strict50
6.1 Usage50
6.2 Quelques cas53
7. JSHint55
7.1 Usage de base55
7.2 Chargement de code57
7.3 Autre usage59
7.3.1 Ligne de commande59
7.3.2 Dans votre éditeur61
8. Documenter votre code avec JSDoc62
8.1 Le principe62
8.2 Les marqueurs62
8.2.1 Déclarations62
8.2.2 Fonctions63
8.2.3 Objet65
8.2.4 Meta66
8.3 Usage67
8.3.1 EDI WebStorm67
8.3.2 Génération d'une documentation67
9. Passage d'un environnement de développement à un environnement de production71
9.1 Tests unitaires71
9.1.1 Introduction71
9.1.2 Gestion avec votre propre librairie71
9.1.3 QUnit75
9.2 Minimisation78
9.2.1 Présentation78
9.2.2 YUI Compressor79
9.2.3 Closure Compiler80
Chapitre2
Développer efficacement en objet
1. Première approche83
1.1 Rappels83
1.1.1 Classe83
1.1.2 Instance84
1.1.3 Encapsulation85
1.1.4 Héritage85
1.1.5 Abstraction86
1.1.6 Surcharge86
1.1.7 L'interface87
1.1.8 Polymorphisme87
1.2 Construction d'un objet88
1.2.1 Préambule88
1.2.2 Instance directe88
1.2.3 Tableau associatif91
1.2.4 Parcours des propriétés92
1.3 Construction d'une classe94
1.3.1 Le constructeur94
1.3.2 L'opérateur new94
1.3.3 L'opérateur this95
1.3.4 Le mot-clé with96
1.3.5 Le mot-clé instanceof97
2. Contexte d'exécution98
2.1 this98
2.2 that100
2.3 Fonction anonyme101
2.4 Binding102
3. Classes prédéfinies104
3.1 Object104
3.2 String107
3.3 RegExp109
3.4 Array113
3.5 Date116
3.6 Math117
4. Notions avancées119
4.1 Prototypage119
4.1.1 Simple119
4.1.2 Optimisée121
4.2 Héritage122
4.2.1 Principe122
4.2.2 Surcharge125
4.2.3 Polymorphisme127
4.2.4 Résolution des conflits128
4.3 Gestion mémoire129
4.3.1 Garbage collector129
4.3.2 null130
4.3.3 delete130
4.3.4 var131
5. Framework pour le développement objet131
5.1 Prototype131
5.1.1 Création d'une classe131
5.1.2 Héritage132
5.1.3 Composition133
5.2 MooTools134
5.2.1 Création d'une classe134
5.2.2 Héritage135
5.2.3 Implémentation136
5.3 jQuery136
5.3.1 Introduction136
5.3.2 Merge simple137
5.3.3 Mélange récursif138
5.4 Dojo139
5.4.1 Introduction139
5.4.2 Création d'une classe139
5.4.3 Héritage140
Chapitre3
Adopter les bonnes pratiques
1. Espace de noms143
1.1 Principe143
1.2 Fonction144
1.2.1 Fonction interne144
1.2.2 Fonction anonyme146
1.2.3 Fonction anonyme avec paramètres147
1.3 Fermeture149
1.4 Classe150
2. Module153
2.1 Présentation153
2.2 Composition155
3. CommonJS158
3.1 Présentation158
3.2 define158
4. AMD161
4.1 Introduction161
4.1.1 Présentation161
4.1.2 Quelques conseils162
4.2 RequireJS163
4.3 Dojo164
4.4 curl166
4.4.1 Principe166
4.4.2 Accès relatif167
4.4.3 Gestion des erreurs de chargement168
4.5 Ecriture de votre gestionnaire de modules168
5. Déboguer votre code172
5.1 Fonction alert172
5.1.1 Usage172
5.1.2 Simplification173
5.1.3 Module174
5.2 Activation/désactivation176
5.3 Fenêtre indépendante176
5.4 Console179
5.4.1 Accès179
5.4.2 log180
5.4.3 Groupe184
5.4.4 Niveaux de trace184
5.4.5 Mesure185
5.4.6 Pile d'appels185
5.5 Débogueur intégré186
5.5.1 Microsoft Edge186
5.5.2 Chrome189
5.5.3 Firefox Developer Edition191
5.5.4 Conclusion192
Chapitre4
Améliorer vos compétences web
1. Page HTML193
1.1 L'indispensable193
1.1.1 Balises193
1.1.2 Balises de structure195
1.1.3 Lien196
1.1.4 Tableau197
1.1.5 Formulaire198
1.1.6 Générique200
1.2 Le CSS200
1.2.1 Déclaration200
1.2.2 Sélecteurs202
1.2.3 Propriétés203
2. Librairies JavaScript206
2.1 L'objet window206
2.1.1 Rôle206
2.1.2 open207
2.1.3 setInterval, setTimeout208
2.1.4 location210
2.1.5 navigator211
3. DOM214
3.1 Document214
3.1.1 Propriétés et méthodes214
3.1.2 Parcours217
3.2 Modification219
3.2.1 Construction222
3.2.2 Événements223
4. Formulaire229
4.1 Validation simple229
4.2 Gestion des champs232
4.3 Contraintes supplémentaires233
4.4 Conception d'un module de validation234
5. Étude de cas236
5.1 Gestion de notes dans une page web, architecture MVC236
5.1.1 Première étape236
5.1.2 Modèle de données237
5.1.3 La vue238
5.1.4 Finalisation238
5.2 Gestion de notes, version 2240
5.2.1 Multivue240
5.2.2 Trier les notes242
5.3 Gestion d'un QCM dans une page web244
5.3.1 Première étape244
5.3.2 Réalisation247
Chapitre5
Développer aisément en client/serveur
1. AJAX251
1.1 Requête simple251
1.2 Réponse XML254
1.3 Paramètres GET255
1.4 Paramètres POST256
1.5 Requêtes entre domaines différents258
1.6 Module259
1.6.1 Version monorequête259
1.6.2 Version multirequête261
1.7 Format d'échange264
1.7.1 Texte264
1.7.2 XML267
1.7.3 XSLT270
1.7.4 JSON279
1.8 Objets en client/serveur284
1.8.1 Implémentation Java intrusive284
1.8.2 Implémentation Java non intrusive289
2. Chargement dynamique de script292
2.1 Première implémentation292
2.2 Module AMD294
Chapitre6
Maîtriser les frameworks Web
1. Bien démarrer avec jQuery299
1.1 Concepts299
1.1.1 Présentation299
1.1.2 Sélecteur302
1.1.3 DOM309
1.1.4 Utilitaires312
1.1.5 Effets de transition314
1.2 Événements315
1.2.1 Interactions utilisateur315
1.2.2 AJAX317
1.2.3 Conclusion321
1.3 Plugins jQuery322
1.3.1 Construction322
1.3.2 Usage324
2. Bien démarrer avec Dojo327
2.1 Concepts327
2.1.1 Présentation327
2.1.2 Configuration329
2.1.3 Vos modules AMD332
2.1.4 DOM334
2.2 Événements338
2.2.1 Interactions utilisateur338
2.2.2 AJAX341
2.2.3 Conclusion343
3. Construire votre framework web344
3.1 Première étape344
3.1.1 Présentation344
3.1.2 Organisation344
3.2 Deuxième étape346
3.2.1 Usage de templates de composant346
3.2.2 Réalisation d'un bouton350
3.3 Troisième étape352
3.3.1 Création d'une calculatrice simple352
3.3.2 L'avenir356
Chapitre7
TypeScript
1. Introduction359
1.1 Objectifs359
1.2 Hello world360
1.3 Environnement de développement361
1.3.1 Visual Studio Community 2022361
1.3.2 WebStorm 202.2362
2. Variable et constante363
2.1 Variable363
2.2 Constante364
3. Typage365
3.1 Déclaration365
3.1.1 Variable365
3.1.2 Fonctions365
3.2 Chaînes366
3.3 Nombre366
3.4 Booléens367
3.5 Enumération367
3.6 Any, Null et Undefined367
3.6.1 Any367
3.6.2 Null et Undefined368
3.7 Tableaux369
3.8 Assertions369
3.9 Itérations370
4. Classes370
4.1 Déclaration et usage370
4.2 Héritage371
4.3 Visibilité des champs373
4.4 Propriétés en lecture seule375
4.5 Accesseurs376
4.6 Propriétés statiques377
5. Interfaces378
5.1 Déclaration378
5.2 Propriétés optionnelles et en lecture seule379
5.3 Types de fonctions381
5.4 Types indexables381
5.5 Implémentation383
6. Génériques385
6.1 Déclaration et usage385
6.2 Types génériques386
6.3 Classes génériques388
6.4 Contraintes388
7. Modules390
7.1 Déclaration et usage390
7.2 Import392
8. Espace de noms393
8.1 Déclaration et usage393
8.2 Espaces de noms multiples395
8.2.1 Construction d'un fichier unique395
8.2.2 Instruction de compilation396
8.3 Espaces de noms imbriqués397
8.4 Alias398
Chapitre8
ECMAScript 2022
1. Usage399
1.1 Compatibilité399
1.2 Portée401
1.3 Constantes402
1.4 Déclaration des fonctions simplifiée403
2. Structure de données plus efficace405
2.1 Chaînes de caractères405
2.2 Collections405
3. Développement objet rapide407
3.1 Classes407
3.2 Attributs408
3.3 Héritage409
3.4 Membres statiques410
3.5 Contexte de this412
3.6 Getters/setters413
3.7 Assignation objet facilitée414
3.8 Déclaration simplifiée415
3.9 Nom de propriété dynamique416
4. Programmation modulaire simplifiée418
4.1 Export418
4.2 Import419
4.3 Usage420
5. Fonctions simplifiées421
5.1 Expressions lambda421
5.2 Itérateurs421
6. Développement asynchrone423
6.1 Simple423
6.2 Multiple424
7. Faciliter l'usage international424
7.1 Nombres424
7.2 Monnaies425
7.3 Dates/heures425
Annexe
Liste des URL
1. Éditeurs JavaScript427
2. Frameworks428
3. Frameworks objets428
4. Librairies428
5. Gestionnaires AMD428
6. Outils429
7. Plugins jQuery430
8. Références430
Index431