Projet Numérologie pour notions de back-end

Tags :
  • MON
  • vert
  • back
Auteur :
  • Lola Perdrix
2024-2025

Ce MON vise à découvrir les notions de back-end, la création de serveurs web, et la gestion de base de données avec les outils fournis sur le cours de M.Brucker

Prérequis

Notions de javascript

Introduction

Objectif

A travers ce MON je souhaite apprendre / réapprendre à faire un site web dynamique avec la gestion d'un serveur, en refaisant le projet numérologie pour comprendre les bases. Je souhaite surtout connaître le fonctionnement d'un back-end et la création de routes, ce qui sera utile dans une premier temps pour le projet 3A et plus lointainement pour mon stage.

Principe

Le projet Numérologie consiste à créer un site web en suivant différentes étapes qui permettent d'illustrer le cours de web expliqué en parallèle sur le même site. Ce site est constitué d'une interface sur laquelle on peut rentrer un prénom et le serveur nous renvoie un chiffre associé à ce prénom ainsi qu'un petit texte associé à la spiritualité du chiffre.

Note

Ce MON a déjà été réalisé par d'autres personnes comme Manuela (MON de Manuela) ou Jeanne (MON de Jeanne)

Sommaire

  1. Front-end
  2. Ajout du back-end
  3. Gestion des données
  4. Jardinage du code
  5. Maintenance
  6. Remarques générales
  7. Conclusion

Front-end

Je suis passée rapidement sur cette partie car j'ai déjà fait plusieurs projets pour apprendre à faire du front. J'ai simplement tout relu en diagonale et ai récupéré les fichiers statiques pour le projet pour être prête à faire le reste. Je note aussi que les bonnes pratiques surviennent après avoir déjà tout fait, je ne suis pas sûre d'avoir saisi pourquoi.

Ajout du back-end

Dans cette partie sur laquelle je me suis beaucoup plus attardée, j'ai appris à construire un serveur node. J'ai passé beaucoup de temps à lire le cours sur les serveurs et à comprendre la gestion des routes avant de le mettre en application sur le projet Numérologie.

Ce que j'ai estimé important de retenir :

La gestion javascript des modules (es6 modules) VS celle de node (commonJS)

Ce qui implique deux styles d'écriture différents. Nous avons choisi la gestion javascript en rajoutant la ligne "type": "module" dans le fichier de configuration package.json.

La forme d'une réponse de requête http
Gérer les routes avec express
Créer des routes spéciales en encodant l'info dans l'url ou dans une query
Faire une requête depuis le front

Se fait avec la fonction fetch suivi de l'url que l'on veut lire. C'est une promesse.

Le fonctionnement les promesses en javascript

await dans une fonction "async" ou .then() selon si on veut attendre ou pas un résultat avant de passer à la suite du code.

Utiliser des fichiers à différents endroits

Dans les fichiers dont on aura besoin ailleurs, comme le fichier qui permet de calculer le chiffre associé au prénom, on va rajouter un export auquel on rattache un objet que l'on peut appeler dans un autre fichier à condition de l'avoir importé. Cela ressemble à : export default { chiffre: chiffreAssocie } dans le fichier numérologie.js puis dans l'autre fichier : import numérologie from './back/numérologie.js'; (attention : on importe avec un chemin relatif). On accède ensuite à la fonction avec mumérologie.chiffre(...)

Gestion des données

Dans cette partie on apprend comment on fait habituellement pour gérer chaque composante de l'acronyme CRUD (create-read-update-delete). Généralement on a besoin que des requêtes get et post.

On passe très souvent par du JSON, dont l'équivalent est le blob pour les images.

Enfin, j'ai pu apprendre comment créer et agir sur une base de données SQLite avec l'ORM sequelize. A noter qu'on définit un fichier pour définir le modèle de la base, et un autre pour la synchronisation et l'initialisation.

Jardinage du code

Cette partie consiste simplement à montrer comment écrire un code plus propre ce qui est je trouve intéressant et facile à suivre. Cette partie n'a pas de cours associé, enfin, c'est un peu comme un cours mais c'est accessible uniquement depuis le projet numérologie car on l'applique directement à ce projet.

Maintenance

Dans cette partie on aborde plusieurs aspects de la maintenance d'un site :

Remarques générales sur le site

L'arborescence du site n'est pas évidente à suivre, on navigue beaucoup entre les pages et on est souvent perdu sur le site. Ca pose problème notamment quand on veut se rappeler d'une information spécifique : on ne sait plus où aller. Aussi, c'est vrai qu'il est bizarre de travailler avec du code en "anglais" avec es noms de variables et de fichiers en français avec des accents, je me suis faite avoir plusieurs fois sur des problèmes de typologies.

Enfin, il y a quelques coquilles sur le code proposé tout au long du site, ainsi que quelques fautes de syntaxe / orthographe qui ne facilitent pas le déroulement du projet et sa lecture. En soi ce n'est pas très grave car cela nous force à bien comprendre le code pour voir où ca bloque, mais ça nous empêche de faire des copier-coller efficaces quand on veut aller plus vite.

Voir les quelques coquilles relevées

Partie 1 :

  • ici, dans la définition de la fonction somme(nombre) la variable chaîne n'est pas déclarée (il manque le let)

Partie 2 :

  • ici, la fonction "nombre(chaîne)" (dans logique de conversion) pose problème, elle n'est pas copier collable il faut reprendre le code de la partie 1.
  • ici aussi, il manque les décarations des variables quand on paramètre les routes (prénom =... plutôt que let prénom =...)

Partie 3 :

  • ici même chose dans la partie lecture de donnée il manque un let devant la variable element

Conclusion

Grâce à ce MON j'ai pu revoir les bases du back-end que j'avais mal comprises / oubliées. J'ai maintenant une vision plus claire et peut être une base plus solide qui me servira pour mes futurs projets avant de devoir utiliser tout de suite des frameworks. Cependant je vois bien qu'on ne recouvre qu'un petite partie de ce que l'on peut faire et il va falloir que je complète ces recherches pour trouver d'autres méthodes qui fonctionneront en fonction de mes projets.