Express
Express
Express
js
Le framework Express.js
● Express.js est un micro-framework pour Node.js.
● Il met à disposition des outils de base pour aller plus vite dans la création
d'applications Node.js.
● Pas assez complet comme les framework php (laravel, symphony ..)
python(django).
● Pour installer express.js
○ npm install express
Express.js: firstApp
Les routes
Les routes dynamiques
Express permet de gérer des routes dont certaines portions peuvent varier en
insérant une variable :mavariable dans l'URL de la route
app.js
const express = require('express');
const userRouter = require('./userRouter ); // Chemin du module de route
const app = express();
app.get('/', (req, res) => {
res.send('Home');
});
app.use('/users', userRouter );
app.listen(300,()=>console.log("listening on port 3000"))
Avantages des Routes Modulaires
● Meilleure Organisation : Les routes modulaires favorisent une meilleure organisation
du code en regroupant des fonctionnalités liées dans des fichiers séparés.
● Facilité de Maintenance : Les modifications et les ajouts de fonctionnalités peuvent
être effectués plus facilement car chaque module de route est autonome.
● Réutilisabilité : Vous pouvez réutiliser des modules de route dans différentes parties
de votre application ou même dans d'autres projets.
● Lisibilité : La lisibilité du code est améliorée car chaque fichier se concentre sur une
tâche ou une fonctionnalité spécifique.
● Évolutivité : Les applications complexes peuvent évoluer de manière plus saine en
utilisant des modules de route, car ils facilitent l'ajout de nouvelles fonctionnalités sans
affecter le reste de l'application.
les middlewares
● Ce sont des petits morceaux d'application qui rendent chacun un service
spécifique.
les middlewares
● Les middlewares de base dans Express ne sont pas nombreux:
○ compression : permet la compression gzip de la page
○ cookie-parser : permet de manipuler les cookies
○ cookie-session : permet de gérer des informations de session (durant la visite d'un
visiteur)
○ serve-static : permet de renvoyer des fichiers statiques contenus dans un dossier
(images, fichiers à télécharger...)
○ serve-favicon : permet de renvoyer la favicon du site
○ etc.
les middlewares
● Ces middlewares sont interconnectés et peuvent communiquer entre eux
en se renvoyant jusqu'à 4 paramètres
○ err: les erreurs
○ req: la requête du visiteur
○ res: la réponse à renvoyer (la page HTML et les informations d'en-tête)
○ next: un callback vers la prochaine fonction à appeler
les middlewares
Créer un Middleware
● Dans Express.js, un middleware est simplement une fonction avec trois
arguments : req (la requête), res (la réponse), et next (la fonction à
appeler pour passer à la fonction middleware suivante).
● Un middleware peut effectuer des opérations sur la requête et la
réponse, et peut appeler next() pour passer la main au middleware
suivant.
const monMiddleware = (req, res, next) => {
// Effectuez des opérations sur la requête ici
console.log('Middleware fonctionne !' );
next(); // Appel à next pour passer au middleware suivant
};
Utiliser un Middleware
● Application-Level Middleware : Ces middlewares s'appliquent à chaque
requête dans l'application
app.use(monMiddleware);
Utiliser un Middleware
● Route-Level Middleware : Ces middlewares s'appliquent uniquement
aux routes spécifiques où ils sont définis.
https://www.freecodecamp.org/news/how-to-sign-and-validate-json-web-tokens/
JWT: signature
…..
const jwt=require("jsonwebtoken")
//const TOKEN_SECRET= require('crypto').randomBytes(64).toString('hex')
// console.log(TOKEN_SECRET)
const TOKEN_SECRET="un secret"
app.post('/api/login', (req, res) => {
Const token=jwt.sign(
{ username: req.body.username },
TOKEN_SECRET,
{ expiresIn: '24h' }
);
res.json(token);
}
JWT: verification
const jwt = require('jsonwebtoken' );
function verifyToken (req, res, next) {
const authHeader = req.headers['authorization' ] //req.header(“Authorization”)
const token = authHeader && authHeader .split(' ')[1]
if (token == null) return res.sendStatus (401)
jwt.verify(token,TOKEN_SECRET , (err, user) => {
if (err) return res.sendStatus (403)
req.user = user
next()
})
}
app.get("/api/products", verifyToken,(req,res)=>{
res.status.send(req.use )
})
Les templates
● Envoyer un contenu Html en utilisant cette
méthode n’est pas une tâche agréable
● Les templates permettent de produire du HTML
et d'insérer au milieu du contenu, des variables
(javascript).
● Il existe beaucoup de langages de templates:
Mustache, Underscore, EJS, JSP, HandlebarsJS,
pug (Jade)...
Les templates
● Principe:
○ depuis un fichier JavaScript, on appelle une template en lui transmettant les variables
dont il a besoin pour construire la page.
PUG
1. Pug est un moteur de templates implémenté en JavaScript
p Pug rocks!
P
| You are logged in as
| [email protected]
P.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequa
Commentaires
● On peut ajouter des commentaires à une template par plusieurs façons:
// My wonderful navbar
nav#navbar-default
//- My wonderful navbar (silent comment)
nav#navbar-default
//
My wonderful navbar
It is just so, awesome!
nav#navbar-default
nav#navbar-default // My wonderful navbar
Javascript dans pug
● Une caractéristique importante de pug est la possibilité d'exécuter du
● On peut insérer des variables,des objets, des boucles, des conditions …ect
-
const employee = {
'name': 'said',
'email': '[email protected]',
'age':21
}
ul
each value, key in employee
li= `${key}: ${value}`
each l’objet est {}
Conditionnels
● Les conditionnels offrent un moyen très pratique de rendre différents
HTML en fonction du résultat d'une expression JavaScript :
-
const student = {
'name': 'said',
'email': '[email protected]',
'age':12
}
if student.age<11
p kid
else if student.age<15
p junior
else
p senior