,
Programmation Web Côté Client avec JavaScript et jQuery
Rémy Malgouyres
LIMOS UMR 6158, IUT, département info Université Clermont 1
B.P. 86
63172 AUBIERE cedex http://malgouyres.org/
Tous mes cours sur le Web sont sur le Web :
Cours de programmation WEB sur les documents hypertexte HTML/CSS : http://malgouyres.org/programmation-html-css
Tutoriel sur le CMS Drupal :
http://malgouyres.org/tutoriel-drupal
Cours de programmation WEB côté serveur en PHP :
http://malgouyres.org/programmation-php
Cours de programmation WEB côté client en JavaScript :
http://malgouyres.org/programmation-javascript
Cours sur l’administration de serveurs (ServeursWEBavecapache,SSL,LDAP...) : http://malgouyres.org/administration-reseau
1 Premiers pas en JavaScript 5
1.1 Balise<script> et Hello world en JavaScript . . . 5
1.2 Types, variables et portée . . . 6
1.3 Fonctions . . . 6
1.4 Objets . . . 7
1.5 Tableaux (le type Array) . . . 11
1.6 Exemple : traitement d’un formulaire avecjQuery . . . 13
2 Programmation Fonctionnelle et Objet en JavaScript 16 2.1 Le Pattern Module . . . 16
2.2 Passage d’arguments par objets . . . 19
2.3 Exemple de fabrique sommaire . . . 20
2.4 Structuration d’une application . . . 21
2.5 Exemple : un module metier.regexUtil . . . 23
2.6 Module Métieradresse . . . 27
2.7 Création d’un ModulemyApp.view.adresse . . . 37
3 Constructeurs, Prototype et Patterns Associés 41 3.1 Constructeurs . . . 41
3.2 Prototypes . . . 42
3.3 Exemple : assurer l’implémentation d’interfaces . . . 45
3.4 Fabrique d’Objets Métier avec prototype . . . 47
3.5 Patterns pseudo-classique (à éviter) . . . 55
4 Interfaces Hommes Machines (IHM) 58 4.1 Filtrage Basique des Inputs d’un Formulaire . . . 58
4.2 Pattern Mediator pour le filtrage d’attributs . . . 60
4.3 Exemple : génération automatique de formulaire d’adresse . . . 64
5 Exemple d’Application Interactive 71 5.1 Principe de l’application et analyse fonctionnelle . . . 71
5.2 Modèle de donnée . . . 71
5.3 Pattern Mediator : centraliser les événements . . . 74
5.4 Événements concernant les personnes . . . 77
5.5 Événements concernant les Adresses . . . 90 1
TABLE DES MATIÈRES
6 Requêtes Asynchrones et API Restful 99
6.1 Qu’est-ce qu’une requête asynchrone ? . . . 99
6.2 Requête Ajax . . . 100
6.3 Qu’est-ce qu’uneAPI REST (ou systèmes Restful) ? . . . 103
6.4 Exemple d’API Restful . . . 103
6.5 Persistance avecAJAX . . . 114
A Graphisme avec les Canvas HTML5 125 A.1 Notion decanvas . . . 125
A.2 Exemple d’animation dans un canvas . . . 126
B Programmation Événementielle en JavaScript 128 B.1 Rappel sur la Gestion d’Événements enCSS . . . 128
B.2 Événements en Javascript . . . 129
C Gestion des fenêtres 134 C.1 Charger un nouveau document . . . 134
C.2 Naviguer dans l’historique . . . 135
C.3 Ouvrir une nouvelle fenêtre (popup) . . . 136
D Document Object Model (DOM) 137 D.1 Qu’est-ce que leDOM? . . . 137
D.2 Sélection et Manipulation de Base sur leDOM . . . 138
Architecture d’une application multi plate-formes
Une application multi plate-formes contemporaine cherchera à se structurer suivant (voir fi- gure 1) :
1. Une application sur un serveur (API) qui traitera les données et assurera la persistance ; 2. Une application sur chaque type de client, qui utilise ce serveur via des requêtes, et gère
l’interface (par exemple une Interface Homme Machine (IHM)).
Mobile Client
Tierce Appli.
Client Web Serveur HTTP
API
requˆetes re
quˆetes
requˆetes
donn´ees
Base de donn´ees
donn
´ees donn´ees
Acteur secondaires
etc.
Figure 1 : La structure typique d’une application multi plate-formes
On aura dans la mesure du possible intérêt à limiter le plus possible le travail côté client pour les raisons suivantes :
1. L’implémentation côté client dépend de la plate-forme et l’implémentation sur le serveur constitue un forme de factorisation du code.
2. Sur certaines plate-formes, comme dans le cas des applications web en JavaScript, la sécurité et la confidentialité côté client sont très mauvaises, alors que nous pouvons implémenter la sécurité côté serveur.
Cependant, dans la mesure du possible, les opérations peu sensible, par exemple concernant l’ergonomie, se feront côté client pour limiter les coûts d’infrastructure (nombre de serveurs...) et améliorer la réactivité de l’application.
3
TABLE DES MATIÈRES
Le cas de l’application Web
Dans ce cours, nous étudions le développement d’applications Web (auxquelles on accède via un navigateur internet), avec une architecture client/serveur dans laquelle (voir la figure 2) :
• Notre API est un serveur HTTP implémenté en PHP avec une architecture MVC et DAL;
• Notre application côté client est enJavaScript (qui s’est imposé comme un langage stan- dard côté client), et utilise la librairie jQuery pour la gestion des événements, des vues, et des interactions (requêtes et échange de données au format JSON) avec le serveur.
BD
GET, POST, PUT, DELETE requˆetes
JSON donn´ees
persistance Driver deBD
´ev´enements utilisateur
Serveur : API
points d’entr´ee et actions architectureMVC requˆetes asynchrones
g´en´eration vuesHTML architectureDAL(g´en´er./exec.SQL) parse/g´en`ereJSON
Client : IHM
parse/g´en`ereJSON
Figure 2 : L’architecture client/serveur de notre application Web