Express.js

Pour cette compétence, j’ai utilisé le livre prêté par M. Blanvillain, “Programmation avec Node.js, Express.js et MongoDB : JavaScript coté serveur” par Éric Sarrion. 
J’ai suivi et mis en pratique toutes les étapes concernant (l’ancienne) bibliothèque de middleware Connect.js, puis du framework Express.js décrites dans le livre, soit :

  • les middlewares
  • l’architecture MVC
  • l’architecture REST
  • les templates, avec pug (anciennement JADE) et EJS

Connect.js

Connect.js est (anciennement) une blibliothèque de plusieurs middlewares. Elle fournit plusieurs outils afin d’aider au développement d’applications Node.js, à savoir :

  • use(), pour l’implémentation des middleware
  • createServer() et listen() pour la création du serveur http
  • errorHandler pour la gestion des erreurs

Depuis 2014 (date d’édition du livre) ces middlewares ont étés sortis de la bibliothèque :

  • logger(), pour la gestion de logs de connection, remplacé par morgan (en référence à Dexter Morgan)
  • query(), pour parser l’url (requêtes GET), remplacé par connect-query et querystring
  • bodyParser(), pour récupérer les variables POST, remplacé par body-parser
  • favicon(), pour fournir une icône de site web, remplacé par serve-favicon
  • static(), pour fournir un accès aux fichiers statiques (PDF, images,…), remplacé par serve-static
  • session(), pour la gestion des session d’utlisateurs, remplacé par serve-static
  • cookieParser(), pour gérer les informations de sesson, remplacé par cookie-parser
  • methodOverride, pour implémenter les méthodes des formulaires (REST), remplacé par method-override

Express.js

Il s’agit d’un framework très répandu qui fournit plusieurs middlewares (dont cités ci-dessus et beaucoup d’autres) et qui permet d’implémenter la gestion des middleware (avec use() comme pour Connect.js) mais qui implémente “nativement” le concept de REST (Representationnal State Transfer) et a un module spécifique qui permet de construire un environnement de départ, basé sur une architecture MVC.

Middleware

Le concept de middleware avec Node.js est très important. Il permet de “crocher” ou d’intercaler des sous-programmes qui vont trairer le flux d’information (request, response).
Un middleware est un petit programme (module) qui effectue une action ou un traitement spécifique.

Exemple : un module de log qui affiche et écrit dans un fichier les requêtes effectuées sur le serveur.

MVC

C’est une architecture de “rangement” du code, un design pattern, qui a pour but de séparer le code en trois groupes :

  • le Modèle, couche d’accès à la base de données
  • la Vue qui est la partie de présentation (html, template)
  • le Controlleur, la logique du programme et les traitements (vérification des inputs, …)

Cela simplifie la maintenance et le développement du programme (développement  backend/frontend séparé) et demande la mise en place d’un développement par fonctionnalité avec des composants indépendants et permet une meilleure réutilisation du code

REST

Il s’agit d’un style architectural (design pattern) des formulaires qui basiquement ne contiennent que (POST et GET) en y ajoutant PUT DELETE et d’autres (pas étudiée dans ce cas) comme HEAD, PATCH, CONNECT, OPTIONS and TRACE.

Pour le développement il y a un plugin Friefox, RESTED, qui permet de préparer des requêtes avec ce mot-clef et une adresse, les envoie au serveur pui d’analyser la réponse.

Templates

Il s’agit de créer des fichiers html modèles écrits dans un language qui seront interprétés par le serveur avant d’être envoyés au navigateur client.

Pour le cas de pug (par défaut pour express), ces fichiers templates sont écrits avec un html simplifié pouvant contenir une logique (boucles et conditions), par exemple pour construire un tableau qui s’adapte en fonction du nombre d’enregistrements reçus (JSON).

Exemple :

h1 liste des points
ul
each point in points
    li= point.no + " " + point.detail

EJS est un autre language – qui fait penser à de l’ASP avec les balises <% %> et est similaire à pug (mais sans le html simplifié).

MongoDB (en cours)

Mise en place de (formulaires >> avec REDTED) REST avec MongoDB et archhitecture MVC

Ressources :

Repository Bitbucket

https://bitbucket.org/FrankTheodoloz/weba-demojs/commits/tag/WEBA-ExpressJS-1-Competence
https://bitbucket.org/FrankTheodoloz/weba-expressjs/commits/tag/WEBA-ExpressJS-2-Competence


Posted

in

by

Tags: