Vous n'êtes pas connecté. Connexion
|
|
MBDS Madagascar 2018-2019De $1Table des matièresIntroductionDans ce cours nous allons jouer avec des technologies front-end dans le cadre d'une approche "moderne" de la programmation de WebApps. Nous allons uniquement utiliser des services dans le cloud, des plateformes de service, ou bien des clients RESTful de WebServices comme ceux que vous développerez dans le cadre du cours "Programmable Web - server side". L'approche moderne ce sont donc des clients "webapps" single page, basés HTML/CSS/JavaScript. Au passage : ce sont les trois seuls langages "standards du Web" qu'un navigateur comprend. Séance 1 : Clients "légers", intro à VueJS / Librairies / consommer un Web Service REST / FireBase (back end mobile)Support de cours :
Live coding: back end RESTFUL et clients légers. Exemples fait en cours (liste de restaurants, avec ajout et suppression):
TP 1 : Exercices avec VueJS, Firebase et WebServices RESTFULPartie 1 : Faire fonctionner l'exemple VueJS vu en classe, mais avec des fichiers et une table HTMLCeci est le dernier exemple vu en classe dans JsBin: https://jsbin.com/jiqowib/edit?html,js,output Ici vous trouverez le fichier exo1_vueJS_table.zip qui contient le même exemple mais fonctionnant avec des fichiers. Dezippez-le et utilisez un serveur Web pour ouvrir le fichier index.html. Je vous suggère d'utiliser un serveur ultra léger comme Web Server For Chrome (extension pour Google Chrome) Travail à faire :
CORRECTION FAITE EN CLASSE (ne pas regarder avant d'avoir fini): Partie 2 : utilisation d'une base de données synchronisée dans le cloud (FireBase)ETAPE 1 : on va créer une base sur FireBase
ETAPE 2 : ajouter le support pour FireBase à votre application Si vous aviez fait l'exercice 1 avec jsBin, voici ici une version avec des fichiers, que je vous conseille de récupérer: exo1_vueJS_table_corrige.zip On va donc utiliser FireBase mais aussi une librairie spéciale pour utiliser FireBase avec VueJS: vue-fire (documentation sur https://github.com/vuejs/vuefire). Pour cela vous allez ajouter ces lignes à votre page HTML (dans le <head>...</head>, avant votre script à vous (script.js) : Mettez-les AVANT l'inclusion de votre fichier script.js !!! Ce dernier utilise des variables définies dans ces deux fichiers.
Ensuite, dans le fichier script.js, vous allez ajouter ces lignes (configuration de firebase) : pensez à mettre entre parenthèse une copie de la valeur de la BD que vous aurez créée :
window.onload = init;
// FIREBASE INIT
var firebaseApp = firebase.initializeApp(
// ICI COPIER LA VALEUR DE LA VARIABLE CONFIG DE FIREBASE (A PRENDRE SUR LE SITE DE VOTRE BD)
);
var db = firebaseApp.database();
var restaurantsRef = db.ref('restaurants');
Et enfin, voici le nouveau code de la vue :
function init() {
new Vue({
el: "#app",
data: {
nom: "",
cuisine:""
},
// from vue-firebase https://github.com/vuejs/vuefire
firebase: {
restaurants: restaurantsRef
},
methods: {
supprimerRestaurant: function (r) {
//this.restaurants.splice(index, 1);
// See documentation https://github.com/vuejs/vuefire
// each elem of the array has a .key property generated by vue-fire
restaurantsRef.child(r['.key']).remove();
},
ajouterRestaurant: function () {
let nouveauRestaurant = {
nom:this.nom,
cuisine:this.cuisine,
id:_.uniqueId("restaurant_")
}
restaurantsRef.push(nouveauRestaurant);
// on remet à zéro les champs
this.nom = "";
this.cuisine = "";
}
}
});
Notez l'apparition d'une propriété "firebase" dans la l'objet passé en paramètre à la Vue. On travaillera dans le template HTML avec la propriété/modèle "restaurants" et dans le code JS sur la variable restaurantsRef qui correspond à la BD distance. Voir documentation de vue-fire pour plus de détails : https://github.com/vuejs/vuefire Séance 2: composants customs, développement en mode CLI
Nous avons vu des "Vues" (parties HTML "augmentées"), mais tous les frameworks modernes introduisent la notion de "composant". Examinons un exemple simple sur JsBin (une liste de hobbies). On peut ajouter des hobbies ou cliquer sur un hobby pour le supprimer. C'est très proche de ce qu'on avait fait avec des restaurants lors de la première séance. Et voici l'exemple avec un composant custom pour modéliser un hobby. Et bien, on peut aller plus loin en commençant à "découper" l'application en "composants" réutilisables. Un composant est associé à un élément HTML "custom", par exemple <app-hobby name="tennis">. On rajoute toujours un "-" dans le nom des éléments HTML custom pour les distinguer des éléments standards HTML5. Chaque composant aura son propre template HTML, ses propres "modèles", ses propres méthodes, mais il peut en plus avoir des "props", c'est-à-dire des "modèles" construits à partir des valeurs des attributs HTML passés en paramètre. Exemple : <app-hobby name="Jeux Vidéo"></app-hobby> Voici un exemple de déclaration: Dans de gros projets, on mettra les différents composants dans des fichiers différents. On ne travaillera plus en mode "déclaratif" mais en mode "CLI" (command line interface). Développer en mode "CLI" avec un environnement de build/testy
Cette fois-ci, pour terminer l'introduction à VueJS, le plus élégant/simple des trois gros frameworks "industriels" modernes (React, VueJS, Angular), nous allons regarder comment on peut développer avec "un environnement de développement", qu'on appelle "CLI" pour "Command Line Environment". Les trois frameworks cités, mais aussi Polymer dont on vient de parler, proposent un environnement "CLI". Travail à faire :
<template> <div id="app"> Hello {{msg}} <div> <router-link to="/">Home</router-link> <router-link to="/blog">Blog</router-link> <router-link to="/compte">compte</router-link> </div> <router-view></router-view> <app-user></app-user> <p>Ceci est un test</p> </div> </template> Correction de l'exercice: live conding... Recupérer des restaurants sur un Web Service RESTSupport de cours :
Ici vous avez des restaurants sous forme d'API: https://restaurantscloud.herokuapp.com/ Et là la "route" GET qui permet de récupérer les 10 premiers restaurants (il y en a plus de 25.000 dans la base de données distante) : https://restaurantscloud.herokuapp.c...pi/restaurants Et ici un petit exemple JsBin qui affiche les 10 premiers restaurants en utilisant le Web Service REST précédent: https://jsbin.com/peromol/edit?js,output Regardez le code pour comprendre l'utilisation du "cycle de vie d'un composant VueJS" et pour voir comment on utilise l'API fetch. Travail à faire : Modifier l'exemple compilé VueJS que vous venez de faire pour afficher des restaurants en provenance de ce Web Service, au lieu d'afficher des restaurants codés en dur. CORRECTION AVEC PAGINATION ET INSERTION: https://jsbin.com/peromol/edit?html,output Normalement vous avez fait votre propre correction avec des fichiers à compiler : Séance 3 : introduction à REACTSupport de cours React Exercices d'introduction, dans une IDE en ligneOn 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 :
|
Powered by MindTouch Deki Open Source Edition v.8.08 |