Master Miage IA2 2021-2022 Technologies Web

De $1

Version de 18:04, 21 Nov 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Introduction

Dans ce cours nous continuerons l'exploration des technologies front-end, back-end avec nodeJS, BDs NoSQL, hébergement dans le cloud etc.

Séance 1 : introduction aux Web Components (standards du W3C)

Supports de cours :

TP1 : écriture d'un générateur de logos

Vous le savez, on peut faire de très jolies choses pour transformer un texte (une chaîne de caractères) en logo coloré, texturé, avec des bordures, des ombres, des animations etc. Uniquement avec HTML et CSS ont peut faire des choses assez impressionnantes. Mais si on met JavaScript et si on utilise par exemple le canvas HTML5 alors on peut faire des animations et des effets encore plus complexes.

L'idée de ce TP est de commencer à voir comment écrire un composant <app-logo> qui accepte un certain nombres d'attributs, par exemple :

  • taille, couleur, couleur bordure, texture, transparence texture, ombre, animation (="rebond" ou "rotationZ", etc.)
  • Et affiche aussi (plus tard optionnellement) quelques champs <input> pour pouvoir aussi modifier cela une fois le logo affiché.

Dans un premier temps on génèrera le logo en utilisant depuis la classe JS du WebComponent l'attribut style de l'élément HTML utilisé dans le template (un <span> ou un <div> par exemple)... dans un second temps vous essaierez d'animer le logo (toujours via CSS)

Enfin, et ce sera à rendre pour la semaine prochaine, vous ajouterez une option pour un logo sous forme de canvas HTML5 et proposerez des animations plus évolués avec des effets plus rigolos.

API JavaScript de votre composant :

  1. Alors, avez-vous bien conçu votre WebComponent ? Avez-vous pensé à proposer une API pour que lui-aussi puisse être controlé de l'extérieur par du code JavaScript (par exemple, par quelqu'un qui l'aurait inclu dans sa propre page et qui voudrait démarrer l'animation en cliquant sur un bouton et en appelant logo.startAnim(20); (20 étant par exemple une vitesse de rotation ou d'animation)... Vous pourrez vous aider par exemple de ce site qui propose des animations CSS .
     
  2. Avez-vous utilisé le MVC (le fait que certains attributs puissent être "surveillés"), si on change par programme la couleur, il faudrait que l'<input type="color"> se mette à jour, si on change la vitesse, que le <input type="range"> se mette à jour etc.

Voilà, cela fait pas mal de choses à faire.... c'est un bon départ avant d'attaquer les frameworks plus connus...

Séance 2 : on continue l'étude des WebComponents

TP2 - On continue le TP1 mais vous commencez à faire votre propre générateur de logo, ajoutez plein d'options :-)

Ici une version du TP1 faite en live coding, un peu plus complète (avec attributs et background image, utilisation de getBaseURL() etc :

A FAIRE POUR LA SEMAINE PROCHAINE :

  1. Finir le TP qui est à rendre et qui donnera la note de CC de ce module (m'envoyer par mail votre repository github)
     
  2. Vous assurer que vous avez bien une version récente de NodeJS installée, et qu'elle est reconnue en ligne de commande (par ex, si vous exécutez "node -v" en ça doit répondre)
     
  3. Installer depuis un terminal en mode administrateur "Angular CLI" en exécutant la commande : npm install -g @angular/cli

  4. Si vous avez le temps, installez aussi un outil d'administration pour MongoDB comme par exemple NoSQLBooster, ou MongoDBCompass (ou autre)

Séance 3 : introduction à Angular

Zip du programme fait en live coding pendant le cours (dezipper, faire "npm i" dans le dossier, puis ng serve)

Séance 4 : on continue...

On utilise le même support de cours à partir du transparent 52 (là où on s'était arrêté lors de la séance 1)

On est allé jusqu'au transparent 86....

Zip du programme fait en live coding. Faire "npm i" et "ng serve" pour exécuter.

Séance 5: On continue... router etc.

On est allé jusqu'au transparent 156....

Zip du programme fait en live coding. Faire "npm i" et "ng serve" pour exécuter.

Séance 6 : fin router + authorisation et authentification

Transparent 156 jusqu'au ... 193

Zip du programme fait en live coding. Faire "npm i" et "ng serve" pour exécuter.

 

Séance 7 et 8 en vidéo : utilisation de Web Services, hébergement sur Heroku, pagination

La vidéo suivante (utilisée avec un cours en ligne du MBDS Maroc) explique les choses suivantes, en suivant à la lettre les transparents du cours (à partir du transparent No 180)

  • Vidéo 1 : https://www.youtube.com/watch?v=PM83nxZ86pU
    1. Création d'une base de données MongoDB dans le cloud,
    2. Explication d'un projet simple d'API (Web Services permettant le CRUD sur la base) à l'aide de NodeJS et Mongoose,
    3. Implémentation de la recherche, modification, suppression et insertion de nouveaux assignments dans le client Angular: modification du service de gestion des assignments pour utiliser le module HttpClient d'angular pour envoyer des requêtes AjaX vers les web services du back-end,
    4. Hébergement sur Heroku du back-end et du front-end.
       
  • Vidéo 2 : https://youtu.be/BaKc7gDkt30 
    1. Implémentation de la pagination à l'aide d'un plugin pour Mongoose,
    2. Utilisation de datatable,
    3. Présentation de ce qu'on attend du mini projet...

Vous pouvez retrouver le programme fait en cours (tel qu'il est à la fin de ces deux vidéos) sur ces repositories github :

Pour exécuter le projet sur votre machine, je conseille de cloner le repository, d'en faire une copie à vous quelque part, de faire cd dans ce dossier, puis d'ouvrir Visual Studio Code. Une fois ceci fait, dans deux terminaux séparés de Visual Studio Code (pas powershell, privilégiez gitbash si vous êtes sous windows), suivez la procédure suivante :

  • Back-End : aller dans "api" et faire "npm i" puis "node server.js". Vous pouvez tester que cela fonctionne en ouvrant l'URL affiché dans le terminal.
  • Front-end : faire "npm i" puis "ng serve". Ouvrez dans votre navigateur l'URL indiqué.