Master Miage IA2 2021-2022 Technologies Web

De $1

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.