Révision nodejs
✅ TD 1 : Introduction à [Link]
1. Qu’est-ce que [Link] et pourquoi a-t-il été créé ?
[Link] est un environnement d'exécution JavaScript côté serveur basé sur le
moteur V8 de Google. Il a été créé pour permettre d'exécuter du code
JavaScript hors du navigateur, notamment pour créer des applications réseau
rapides, scalables et non bloquantes.
2. C’est quoi V8 ?
V8 est le moteur JavaScript open-source de Google utilisé dans Chrome. Il
compile JavaScript en code machine natif, rendant l'exécution très rapide.
3. En quoi [Link] est-il différent des autres technologies
backend (PHP, Python) ?
Asynchrone & non bloquant (event-driven)
Utilise JavaScript côté serveur
Grande performance pour des applications temps réel
Single-threaded, mais utilise une boucle d'événements
4. Pourquoi [Link] est utilisé pour les applications en temps
réel ?
Grâce à son architecture asynchrone, il peut gérer de nombreuses connexions
simultanées sans bloquer, ce qui est idéal pour les chats, jeux, notifications,
etc.
5. Quel est le rôle du moteur V8 dans [Link] ?
Il exécute le JavaScript très rapidement et efficacement en le compilant en
code machine.
6. Importance de l’Event Loop :
L'Event Loop permet de gérer les appels asynchrones. Elle fonctionne comme
un gestionnaire de tâches qui traite les événements (I/O, timers...) sans bloquer
Révision nodejs 1
le thread principal.
7. Qu’est-ce qu’un module [Link] ?
Un module est une bibliothèque ou un fichier JavaScript exportant des
fonctions/objets à réutiliser.
Natifs : fs , os , http
Tiers : express , mongoose
8 & 10. Utilité du module fs + Exemple :
Il permet de manipuler le système de fichiers.
const fs = require('fs');
[Link]('[Link]', 'utf-8', (err, data) => {
if (err) throw err;
[Link](data);
});
9. Exemple avec os :
const os = require('os');
[Link]("Type d'OS:", [Link]());
[Link]("Architecture:", [Link]());
[Link]("Mémoire libre:", [Link]());
[Link]("Répertoire courant:", [Link]());
✅ TD 2 : NVM
1. Qu’est-ce que NVM ?
NVM (Node Version Manager) permet d’installer, de gérer et de basculer entre
plusieurs versions de [Link] sur une même machine.
2. Comment installer plusieurs versions ?
nvm install 14
Révision nodejs 2
nvm install 18
3. Commande pour voir les versions :
nvm ls
4. Changer la version :
nvm use 14
5. Définir une version par défaut :
nvm alias default 18
✅ TD 3 : npm et modules
2. Dev vs Prod :
Développement : outils comme nodemon
Production : performances optimisées, pas besoin des outils de dev
3. Module natif / local / installé :
Natif : inclus avec Node (fs, path)
Local : créé dans le projet
Installé : via npm ( express , axios )
4. CommonJS vs ES Modules :
CommonJS : require() (ancien)
ES Module : import / export (moderne, ES6)
5. Rôle de npm :
Gérer les dépendances, scripts, et publier des packages.
6. [Link] :
Révision nodejs 3
Fichier qui décrit le projet, ses dépendances, scripts, métadonnées.
7. Contenu essentiel :
name
version
dependencies
scripts
8. dependencies vs devDependencies :
dependencies : nécessaires en production
devDependencies : nécessaires uniquement en développement
9. npm install :
Installe tous les paquets listés dans [Link] .
10. [Link] :
Assure que tous les utilisateurs installent exactement les mêmes versions.
11. Liste des paquets du projet :
npm list --depth=0
12. Liste des paquets globaux :
npm list -g --depth=0
13. Commandes :
npm init -y
npm install express
npm uninstall express
npm install [email protected]
✅ TD 4 : Création d’un serveur HTTP
Révision nodejs 4
1. C’est quoi HTTP ?
Protocole de communication client-serveur sur le web.
2. Entités :
Client
Serveur
Requête/Response
URL, Méthodes, Statuts
3. Créer un serveur sans Express :
const http = require('http');
const server = [Link]((req, res) => {
[Link](200, {"Content-Type": "text/plain"});
[Link]("Bienvenue sur mon serveur");
});
[Link](3000);
4. Gestion des requêtes/réponses :
Node lit la requête (req), construit une réponse (res), et l’envoie.
5. Statuts HTTP :
200 OK
404 Not Found
500 Internal Server Error
6. Pourquoi CORS ?
Permet aux navigateurs d’autoriser des requêtes entre domaines différents.
7. Routes dynamiques :
Analyser [Link] , découper les paramètres.
8. Exemple [Link] avec Express :
Révision nodejs 5
const express = require('express');
const app = express();
[Link]('/', (req, res) => [Link]("Accueil"));
[Link](3000);
✅ TD 5 : Moteurs de templates
2. C’est quoi un moteur de template ?
Outil pour générer du HTML dynamique à partir de données (ex : EJS, Pug).
3. Rôle dans un projet [Link] :
Générer les pages HTML dynamiquement côté serveur.
1. Moteurs les plus utilisés :
EJS
Pug
Handlebars
2. Différences :
EJS : syntaxe proche HTML
Pug : syntaxe indentée
Handlebars : logique plus stricte
3. Pourquoi l’utiliser ?
Pour insérer dynamiquement des données dans les pages HTML.
✅ TD 6 : Middlewares
1. C’est quoi un middleware ?
Fonction qui intercepte les requêtes HTTP avant la réponse finale.
2. Fonctionnement Express (schéma simple) :
Révision nodejs 6
Req ---> Middleware 1 ---> Middleware 2 ---> Route Handler ---> Re
sponse
3. Différences :
Global : [Link]()
Spécifique : sur une route
Erreur : 4 paramètres (err, req, res, next)
4. Utilité :
Logging
Sécurité
Authentification
Gestion des erreurs
5. Ordre important :
Les middlewares sont appelés dans l’ordre d’écriture.
6. [Link]() vs [Link]()
use() : pour tous les types de requêtes
get() : uniquement pour GET
7. Pourquoi next() ?
Pour passer au middleware suivant. Sans lui, la requête est bloquée.
✅ TD 7 : Connexion DB
1. Différence SQL / NoSQL :
SQL : relationnelle (MySQL, PostgreSQL)
NoSQL : non relationnelle (MongoDB)
2. ORM vs Requêtes :
ORM : code plus propre, objets
Révision nodejs 7
Directes : requêtes SQL manuelles
3. Connexion Sequelize :
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize('db', 'user', 'pass', {
host: 'localhost',
dialect: 'mysql'
});
4. Connexion Mongoose :
const mongoose = require('mongoose');
[Link]('mongodb://localhost:27017/test');
5. Différence des requêtes :
SQL : SELECT * FROM clients
NoSQL : [Link]({})
6. Avantages ORM/ODM :
Abstraction des requêtes
Meilleure gestion des modèles
✅ TD 8 : API REST avec Express
1. [Link] ?
Framework web pour [Link] qui simplifie la gestion des routes, middlewares
et requêtes HTTP.
2. Routes :
[Link]('/clients', ...)
[Link]('/clients', ...)
[Link]('/clients/:id', ...)
[Link]('/clients/:id', ...)
Révision nodejs 8
3. Params vs Body :
[Link] : paramètres dans l’URL
[Link] : données envoyées (JSON)
4. Exemples de middlewares :
[Link]() : parser JSON
cors() : gestion CORS
helmet() : sécurité
✅ TD 9 : Sécurité & Authentification
1. Authentification vs Autorisation :
Authentification : vérifier l’identité
Autorisation : vérifier les permissions
2. Pourquoi JWT ?
Léger, sécurisé, stateless
Transport d’infos dans le token
3. JWT vs OAuth2 vs Sessions :
JWT : Token, sans état
OAuth2 : Délégation, social login
Session : Stockée côté serveur
4. Pourquoi une expiration ?
Pour éviter qu’un token soit réutilisé indéfiniment.
5. Fonctionnement [Link] :
Utilise des stratégies (JWT, Google, Facebook…) pour gérer l’authentification
facilement.
Révision nodejs 9