|
Master 2 Miage MBDS 2019-2020
De $1
Table des matières- 1. Introduction
- 2. Séance 1 : rappels essentiels sur JavaScript asynchrone / premiers WebServices avec NodeJS
- 2.1. Rappels sur l'asynchronisme en JavaScript, les reqêtes Ajax
- 2.2. Rappels sur les Web Services REST
- 2.3. On commence l'étude de NodeJS
- 2.4. Seance 2 : Premiers pas avec MongoDB
- 2.5. Exemple de code NodeJS pour faire le CRUD sur une base MongoDB
- 2.6. Ajouter le support "cross domain" à votre projet node/MongoDB
- 2.7. Introduction à React
- 2.8.
Supports de cours :
SupportsDeCoursReactRedux.zip
- 2.8.1. Exercices d'introduction, dans une IDE en ligne
- 2.9.
On peut faire du react dans JsBin/JsFiddle/CodePen, mais croyez-moi, juste pour de petits exemples !
Exemple 1: comprendre le mécanisme de rendu de React Exemple 2: évenements et immutable DOM Exemple 3: premier composant Exemple 4 : on passe des "propriétés" au composant Exemple 5 : le composant en classe ES6 Exemple 6: état d'un composant, on refait marcher le bouton Exemple 7: rendu conditionnel Exemple 8: rendu de listes dynamiques Là, si vous avez essayé de taper le code en même temps que moi, vous devez vous dire que c'est la merde à debugger, que les messages d'erreur ne sont pas clairs etc... Exemples 9 et 10 : styles CSS conditionnels et classes CSS conditionelles Exemple 11: two way binding Exemple 12: deux composants (dont un "stateless") Exemple 13: passer des infos d'un composant fils à son composant père
- 2.9.1. Exercice à faire en vous aidant des exercices précédents:
- 2.10.
Pour vous donner une idée du résultat attendu,voici l'équivalent en VueJS: http://jsbin.com/guwetoy/1/edit?html,output
Je conseille de partir de cet exemple React: le composant en classe ES6
En vous aidant de l'exemple fait en classe en live coding, voud devrez faire incrémentalement, en testant après chaque étape :
Créez un <div> et affichez dedans un composant Root avec React (l'App des exemples) Affichez un tableau de hobbies dans ce <div> (foot, tennis, jeux video, etc.) sous la forme d'une liste. Chaque hobby sera un <li>. Vous fournirez des hobbies par défaut. Ajoutez un bouton 'Nouveau Hobby' et un champ input pour saisir le nom du hobbie à rajouter. La liste doit se mettre à jour. Rendez les hobbies clickables pour qu'on puisse les supprimer Un message <p>Hobby supprimé !</p> devra apparaitre lorsqu'un hobby est supprimé Ajoutez un compteur de hobbies (<p>Hobbies: 4</p>) au-dessus de la liste des hobbies, qui indiquera le nombre de hobbies dans la liste. Vous changerez les styles CSS des éléments de la liste pour qu'ils s'affichent en rouge et vert à chaque ligne, en alternance. Vous utiliserez aussi des classes CSS dynamiques pour afficher le compteur en rouge si le nombre de hobbies est supérieur à trois, en vert sinon. Chaque <li>, chaque hobby, sera maintenant dans un composant <Hobby/>
ICI UNE CORRECTION: https://codepen.io/w3devcampus/pen/xxKeJZW
- 2.10.1. Exercices avec un environnement "CLI"
- 2.11.
Si on va voir la page de facebook sur "how to start with React", il y a un chapitre qui concerne le mode "CLI": https://reactjs.org/docs/add-react-to-a-new-app.html
Vous devez avoir nodeJS correctement installé (node, npm, etc, tout ceci doit fonctionner...) Installez l'extension Google Chrome "React Developer Tools" (https://chrome.google.com/webstore/d...jfkapdkoienihi), elle existe aussi pour Firefox. Installez une bonne fenêtre terminal pour Windows -si vous êtes sous windows comme http://cmder.net/ ou autre (github bash, etc.) si je vous vois avec une fenêtre DOS basique vous allez m'entendre ! Installer les packages "babel" et "emmet" si vous êtres sous Sublime Text 3 ou Atom. Ca doit etre ok pour Visual Studio Code, WebStorm etc. Ouvrir la ligne de commande et exécuter la commande "npm install -g create-react-app", Pour vérifier que ça fonctionne, créez un autre répertoire nommé "react_cli" et cd dedans, Executez "create-react-app hello-world" (ça prend du temps, quelques minutes)... Allez dans le répertoire créé (cd hello-world), et faites "npm install" (là aussi, quelques minutes) Exécutez le programme en tapant "npm start", ça doit ouvrir automatiquement le browser sur le port 3000 et afficher une page avec le logo React qui tourne. Editez le code du fichier src/App.js, changez le texte et sauvez -> la page Web de l'application doit se rafraichir automatiquement. Maintenant on va étudier le code, regardez les fichiers html, js, les configs etc. Essayez de modifier la partie "render" de App.js... hmmm ok. Bon, on va faire un simple composant <Username name="toto"/> qu'on va mettre dans un sous répertoire "components" dans les sources, il va simplement afficher un nom passé en attribut/props dans un paragraphe en couleur. Vous ajouterez dans <App/> Plusieurs instances de ce composant.
Exercice: refaire dans le projet les hobbies en mode CLI !
Ici correction (inclut fetch) (désarchiver, cd dans le repertoire, npm install, npm start)
- 2.12.
Exercice: afficher les restaurants avec un fetch, en mode CLI !
- 2.13. Exercice à faire pour la prochaine fois : utiliser un outil pour générer la documentation HTML de vos API REST
- 1. Introduction
- 2. Séance 1 : rappels essentiels sur JavaScript asynchrone / premiers WebServices avec NodeJS
- 2.1. Rappels sur l'asynchronisme en JavaScript, les reqêtes Ajax
- 2.2. Rappels sur les Web Services REST
- 2.3. On commence l'étude de NodeJS
- 2.4. Seance 2 : Premiers pas avec MongoDB
- 2.5. Exemple de code NodeJS pour faire le CRUD sur une base MongoDB
- 2.6. Ajouter le support "cross domain" à votre projet node/MongoDB
- 2.7. Introduction à React
- 2.8.
Supports de cours :
SupportsDeCoursReactRedux.zip
- 2.8.1. Exercices d'introduction, dans une IDE en ligne
- 2.9.
On peut faire du react dans JsBin/JsFiddle/CodePen, mais croyez-moi, juste pour de petits exemples !
Exemple 1: comprendre le mécanisme de rendu de React Exemple 2: évenements et immutable DOM Exemple 3: premier composant Exemple 4 : on passe des "propriétés" au composant Exemple 5 : le composant en classe ES6 Exemple 6: état d'un composant, on refait marcher le bouton Exemple 7: rendu conditionnel Exemple 8: rendu de listes dynamiques Là, si vous avez essayé de taper le code en même temps que moi, vous devez vous dire que c'est la merde à debugger, que les messages d'erreur ne sont pas clairs etc... Exemples 9 et 10 : styles CSS conditionnels et classes CSS conditionelles Exemple 11: two way binding Exemple 12: deux composants (dont un "stateless") Exemple 13: passer des infos d'un composant fils à son composant père
- 2.9.1. Exercice à faire en vous aidant des exercices précédents:
- 2.10.
Pour vous donner une idée du résultat attendu,voici l'équivalent en VueJS: http://jsbin.com/guwetoy/1/edit?html,output
Je conseille de partir de cet exemple React: le composant en classe ES6
En vous aidant de l'exemple fait en classe en live coding, voud devrez faire incrémentalement, en testant après chaque étape :
Créez un <div> et affichez dedans un composant Root avec React (l'App des exemples) Affichez un tableau de hobbies dans ce <div> (foot, tennis, jeux video, etc.) sous la forme d'une liste. Chaque hobby sera un <li>. Vous fournirez des hobbies par défaut. Ajoutez un bouton 'Nouveau Hobby' et un champ input pour saisir le nom du hobbie à rajouter. La liste doit se mettre à jour. Rendez les hobbies clickables pour qu'on puisse les supprimer Un message <p>Hobby supprimé !</p> devra apparaitre lorsqu'un hobby est supprimé Ajoutez un compteur de hobbies (<p>Hobbies: 4</p>) au-dessus de la liste des hobbies, qui indiquera le nombre de hobbies dans la liste. Vous changerez les styles CSS des éléments de la liste pour qu'ils s'affichent en rouge et vert à chaque ligne, en alternance. Vous utiliserez aussi des classes CSS dynamiques pour afficher le compteur en rouge si le nombre de hobbies est supérieur à trois, en vert sinon. Chaque <li>, chaque hobby, sera maintenant dans un composant <Hobby/>
ICI UNE CORRECTION: https://codepen.io/w3devcampus/pen/xxKeJZW
- 2.10.1. Exercices avec un environnement "CLI"
- 2.11.
Si on va voir la page de facebook sur "how to start with React", il y a un chapitre qui concerne le mode "CLI": https://reactjs.org/docs/add-react-to-a-new-app.html
Vous devez avoir nodeJS correctement installé (node, npm, etc, tout ceci doit fonctionner...) Installez l'extension Google Chrome "React Developer Tools" (https://chrome.google.com/webstore/d...jfkapdkoienihi), elle existe aussi pour Firefox. Installez une bonne fenêtre terminal pour Windows -si vous êtes sous windows comme http://cmder.net/ ou autre (github bash, etc.) si je vous vois avec une fenêtre DOS basique vous allez m'entendre ! Installer les packages "babel" et "emmet" si vous êtres sous Sublime Text 3 ou Atom. Ca doit etre ok pour Visual Studio Code, WebStorm etc. Ouvrir la ligne de commande et exécuter la commande "npm install -g create-react-app", Pour vérifier que ça fonctionne, créez un autre répertoire nommé "react_cli" et cd dedans, Executez "create-react-app hello-world" (ça prend du temps, quelques minutes)... Allez dans le répertoire créé (cd hello-world), et faites "npm install" (là aussi, quelques minutes) Exécutez le programme en tapant "npm start", ça doit ouvrir automatiquement le browser sur le port 3000 et afficher une page avec le logo React qui tourne. Editez le code du fichier src/App.js, changez le texte et sauvez -> la page Web de l'application doit se rafraichir automatiquement. Maintenant on va étudier le code, regardez les fichiers html, js, les configs etc. Essayez de modifier la partie "render" de App.js... hmmm ok. Bon, on va faire un simple composant <Username name="toto"/> qu'on va mettre dans un sous répertoire "components" dans les sources, il va simplement afficher un nom passé en attribut/props dans un paragraphe en couleur. Vous ajouterez dans <App/> Plusieurs instances de ce composant.
Exercice: refaire dans le projet les hobbies en mode CLI !
Ici correction (inclut fetch) (désarchiver, cd dans le repertoire, npm install, npm start)
- 2.12.
Exercice: afficher les restaurants avec un fetch, en mode CLI !
- 2.13. Exercice à faire pour la prochaine fois : utiliser un outil pour générer la documentation HTML de vos API REST
Introduction
Dans ce cours nous verrons le developpement de WebApps fullstack avec NodeJS/MongoDB/Firecloud-Firebase/cloud et avec les principaux frameworks JS front-end (React et Angular, VueJS ayant été étudié l'an dernier).
Séance 1 : rappels essentiels sur JavaScript asynchrone / premiers WebServices avec NodeJS
Rappels sur l'asynchronisme en JavaScript, les reqêtes Ajax
Support de cours :
- Des callbacks aux promesses et révision sur la gestion des erreurs, map/reduce, le parallélisme...
- async/await : des promesses plus simples au niveau syntaxique (mais moins puissantes)
- Requêtes Ajax : de XmlHttpRequest à fetch, la fetch API
- Exemples fait en classe en live coding :
On commence l'étude de NodeJS
Support de cours :
- Transparents de présentation de NodeJS
- Transparents de présentation de Express
- Livres à demander au prof pour ceux qui sont déjà à l'aise avec NodeJS.
Exercice à faire :
- Récupérez cette archive, dezippez là quelque part, avec la ligne de commande, faites cd dans le répertoire TP_ROUTAGE_EXPRESS_CRUD_AJAX créé, et exécutez la commande "npm install".
Ceci devrait créer un sous directory node_modules contenant les modules nécessaires (dans notre cas: express et multer). - Suivez les consignes du prof et les explications au tableau.
Seance 2 : Premiers pas avec MongoDB
Support de cours :
Installer MongoDB sur sa machine
Exemple de code NodeJS pour faire le CRUD sur une base MongoDB
- Récupérez cette archive qui est une version modifiée de l'exercice précédent: TPRoutageExpressWithMongo3.zip
- Dezipper, allez dans le répertoire créé (
TPRoutageExpressWithMongo3 ) et faites "npm install " - Exécutez
node serverCrudWithMongo (ou nodemon) - Ouvrez localhost:8080
- Etudiez le code, regardez en particulier comment, quand on clique sur le premier bouton GET AJAX un tableau est construit dynamiquement.
Ajouter le support "cross domain" à votre projet node/MongoDB
Ajouter les lignes suivantes dans la configuration de votre serveur (fichier serverCrudWithMongo.js), ça se passe dans la configuration de express, c'est l'équivalent des "Servlet Filters" en JavaEE :
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE");
next();
});
Note : vous pouvez également utiliser un des nombreux modules npm pour ajouter à votre projet le support cross-domain, par exemple le module cors. Notez bien qu'on va écrire presqu'autant de lignes de code qu'en le faisant à la main.
Supports de cours :
Exercices d'introduction, dans une IDE en ligne
On peut faire du react dans JsBin/JsFiddle/CodePen, mais croyez-moi, juste pour de petits exemples !
Exercice à faire en vous aidant des exercices précédents:
Pour vous donner une idée du résultat attendu,voici l'équivalent en VueJS: http://jsbin.com/guwetoy/1/edit?html,output
Je conseille de partir de cet exemple React: le composant en classe ES6
En vous aidant de l'exemple fait en classe en live coding, voud devrez faire incrémentalement, en testant après chaque étape :
- Créez un <div> et affichez dedans un composant Root avec React (l'App des exemples)
- Affichez un tableau de hobbies dans ce <div> (foot, tennis, jeux video, etc.) sous la forme d'une liste. Chaque hobby sera un <li>. Vous fournirez des hobbies par défaut.
- Ajoutez un bouton 'Nouveau Hobby' et un champ input pour saisir le nom du hobbie à rajouter. La liste doit se mettre à jour.
- Rendez les hobbies clickables pour qu'on puisse les supprimer
- Un message <p>Hobby supprimé !</p> devra apparaitre lorsqu'un hobby est supprimé
- Ajoutez un compteur de hobbies (<p>Hobbies: 4</p>) au-dessus de la liste des hobbies, qui indiquera le nombre de hobbies dans la liste.
- Vous changerez les styles CSS des éléments de la liste pour qu'ils s'affichent en rouge et vert à chaque ligne, en alternance. Vous utiliserez aussi des classes CSS dynamiques pour afficher le compteur en rouge si le nombre de hobbies est supérieur à trois, en vert sinon.
- Chaque <li>, chaque hobby, sera maintenant dans un composant <Hobby/>
ICI UNE CORRECTION: https://codepen.io/w3devcampus/pen/xxKeJZW
Exercices avec un environnement "CLI"
Si on va voir la page de facebook sur "how to start with React", il y a un chapitre qui concerne le mode "CLI": https://reactjs.org/docs/add-react-to-a-new-app.html
- Vous devez avoir nodeJS correctement installé (node, npm, etc, tout ceci doit fonctionner...)
- Installez l'extension Google Chrome "React Developer Tools" (https://chrome.google.com/webstore/d...jfkapdkoienihi), elle existe aussi pour Firefox.
- Installez une bonne fenêtre terminal pour Windows -si vous êtes sous windows comme http://cmder.net/ ou autre (github bash, etc.) si je vous vois avec une fenêtre DOS basique vous allez m'entendre !
- Installer les packages "babel" et "emmet" si vous êtres sous Sublime Text 3 ou Atom. Ca doit etre ok pour Visual Studio Code, WebStorm etc.
- Ouvrir la ligne de commande et exécuter la commande "npm install -g create-react-app",
- Pour vérifier que ça fonctionne, créez un autre répertoire nommé "react_cli" et cd dedans,
- Executez "
create-react-app hello-world " (ça prend du temps, quelques minutes)... - Allez dans le répertoire créé (
cd hello-world ), et faites "npm install " (là aussi, quelques minutes) - Exécutez le programme en tapant "
npm start ", ça doit ouvrir automatiquement le browser sur le port 3000 et afficher une page avec le logo React qui tourne. - Editez le code du fichier
src/App.js , changez le texte et sauvez -> la page Web de l'application doit se rafraichir automatiquement. - Maintenant on va étudier le code, regardez les fichiers html, js, les configs etc.
- Essayez de modifier la partie "render" de App.js... hmmm ok. Bon, on va faire un simple composant
<Username name="toto"/> qu'on va mettre dans un sous répertoire "components" dans les sources, il va simplement afficher un nom passé en attribut/props dans un paragraphe en couleur. Vous ajouterez dans <App/> Plusieurs instances de ce composant.
Exercice: refaire dans le projet les hobbies en mode CLI !
Exercice: afficher les restaurants avec un fetch, en mode CLI !
Exercice à faire pour la prochaine fois : utiliser un outil pour générer la documentation HTML de vos API REST
|