|
MBDS Madagascar 2019-2020
De $1
Introduction
Dans ce cours nous ferons des rappels sur JavaScript et feront une introduction à VueJS et peut-être à React.
Avant tout chose :
- Quel est votre niveau en JavaScript ?
- Avez-vous utilisé NodeJS ?
- Avez-vous utilisé VueJS, React ou Angular ?
Jour 1: Single page webapps avec VueJS, bases de données synchronisées dans le cloud
Partie 1 Live coding: de JavaScript aux librairies aux frameworks
Exemples fait en cours (liste de restaurants, avec ajout et suppression):
- En pur JavaScript avec utilisation des APIs du DOM (append, createElement, removeChild, innerHTML) et de la selector API (document.querySelector...) : https://jsbin.com/wocesuqaho/edit?js,output
- Le même exemple mais en utilisant des librairies pour simplifier certaines parties (ici utilisation de lodash pour la génération d'ids, de jQuery pour simplifier l'utilisation du DOM): https://jsbin.com/newepid/edit?js,output
- Enfin, encore le même exemple mais avec l'utilisation du framework VueJS en mode déclaratif : https://jsbin.com/powofij/edit?js,output
- Un autre exemple mais qui utilise cette fois-ci des "components" : https://jsbin.com/powofij/edit?html,css,output
- Autre exemple mais on va chercher des données distantes via une requête Ajax basée sur l'API fetch : https://jsbin.com/popuwut/edit?html,js,output
Partie 2 : découverte de VueJS en mode CLI (command line interface)
ETAPE 1 : installation de NodeJS (nécessaire pour développement CLI)
Allez sur le site https://nodejs.org et installez la version "recommended for most users".
Si tout se passe bien, après l'installation, ouvrez une fenêtre de terminal et tapez la commande "node -v". Ca doit afficher la version de nodeJS que vous venez d'installer.
Vérifiez que vous avez bien:
- Une version de node >= 10.16 (commande à taper : "node -v)
- Une version de npm >= 6.11 (commande à taper : "npm -v")
Etape 2 : Création d'une application simple en mode CLI, utilisant la base de données synchronisée Google Firestore
Travail à faire :
-
Suivre ce tutorial -
En vous aidant de ce petit exemple jsbin qui consomme des données depuis une API REST à propos de groupes de musique rock, modifiez votre programme VueJS pour qu'il affiche les membres de Metallica. Avez-vous pensé à faire un Composant GroupeRock ? -
CORRECTION avec GroupeRock.vue : télécharger cette archive, dezipper, aller dans le répertoire et faites "npm install", puis "npm run dev"
Jour 2 : on utilise une librairie graphique ! (Vue Material) et intro à React
Partie 1 : utilisation de Vue-Material avec VueJS
On va suivre le "Getting started" du site officiel de Vue-Material (https://vuematerial.io/) et on va utiliser quelques composants, notamment les "datatables"...
Ici exemple fait en classe dans cette archive: dezipper, faire "npm install" et "npm run dev"'
Partie 2 : premiers pas avec React
Supports de cours :
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 CORRRECTION "classique" : https://codepen.io/w3devcampus/pen/xxGOPXO?editors=0010
ICI UNE CORRECTION AVANCEE (qui utilise la "destructuration" et les arrow functions en masse): https://codepen.io/w3devcampus/pen/xxKeJZW
Partie 3 : on continue avec React (intro au mode CLI)
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.
- 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, par exemple, essayer de 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 1: refaire dans le projet les hobbies en mode CLI !
Exercice 2 : compléter le rendu des photos distantes dans le composant Photos.js
Correction ici : récupérer cette archive, "npm install" puis "npm run start"
Partie 4 : utilisation du router et de la bilbiothèque graphique Material UI
N'oubliez pas : vous avez un livre dans les supports de cours, sur Material UI !
Support de cours :
|