Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.
-
Il est nécessaire de disposer de Node Package Manager. La méthode d’installation dépend du système d’exploitation.
-
Afin de récupérer les sources du workshop, il est souhaitable d’installer git.
La référence du langage JavaScript est disponible sur le site de Mozilla.
Pour disposer des sources, deux possibilités existent :
-
Soit utiliser git :
git clone [email protected]:formations/javascript-fondation.git
-
Ou bien télécharger l’archive puis la décompresser.
Le workshop est basé sur la structure d’un projet npm qui utilise Grunt comme exécuteur de tâches.
Pour télécharger les dépendances du projet, exécuter la commande suivante :
npm install
La première partie du travail demandé consiste à implémenter le corps de fonctions JavaScript dans le fichier src/index.js
.
Voici un exemple d’une telle fonction :
function add(i1, i2) {
'use strict';
// Définir une fonction add() qui prend en paramètres deux nombres i1 et i2 et retourne leur somme
}
Le résultat final est donc le suivant :
function add(i1, i2) {
'use strict';
// Définir une fonction add() qui prend en paramètres deux nombres i1 et i2 et retourne leur somme
return i1 + i2;
}
La seconde partie du travail consiste à rendre fonctionnel le formulaire index.html
.
Ce formulaire reprend les fonctions développées dans la première partie (et en ajoutent 3 autres, voir ci-dessous). L’objectif est d’utiliser celles-ci de manière interactive. Pour cela, pour chaque fonction, il faut :
-
Lire la valeur du (des) champs à chaque perte de focus de ceux-ci
-
Vérifier que tous les champs ont des valeurs valides pour la fonction (par exemple,
fact()
n’accepte que des nombres) -
Exécuter la fonction
-
Valoriser la dernière colonne avec le résultat de la fonction
Pour les 3 dernières lignes, le champ accepte une URL et la sortie du champ lance une requête AJAX vers cette URL. Le résultat de la requête alimente la dernière colonne. Chaque ligne doit employer une méthode différente :
-
AJAX synchrone
-
AJAX asynchrone
-
jQuery
Pour aider à la vérification du code des implémentations, le projet dispose des tests unitaires sur les fonctions - Jasmine, et d’un vérificateur syntaxique - JSHint.
Pour exécuter les tests, taper la commande suivante :
grunt jasmine
La console doit alors afficher le résultat suivant :
Running "jasmine:src" (jasmine) task Testing jasmine specs via PhantomJS add() X 1 & 2 -> 3 Expected undefined to equal 3. (1) X 1 & 12 -> 13 Expected undefined to equal 13. (1) X 10 & 2 -> 12 Expected undefined to equal 12. (1)
Une fois la méthode correctement implémentée, on obtient ceci :
Running "jasmine:src" (jasmine) task Testing jasmine specs via PhantomJS add() ✓ 1 & 2 -> 3 ✓ 1 & 12 -> 13 ✓ 10 & 2 -> 12
Pour exécuter la vérification syntaxique, taper la commande suivante :
grunt jshint
La console affiche alors un résultat similaire :
Running "jshint:all" (jshint) task src/index.js line 2 col 18 'i2' is defined but never used. line 2 col 14 'i1' is defined but never used.
Le travail consiste à corriger les erreurs listées.
Pour exécuter à la fois les tests et la vérification, taper :
grunt check
Tip
|
Les tâches Grunt Pour forcer l’exécution de grunt check --force |