Académique Documents
Professionnel Documents
Culture Documents
Présentation de Node.js
Pourquoi Node.js ?
Node.js utilise la programmation asynchrone !
Une tâche courante pour un serveur Web peut être d'ouvrir un fichier sur le serveur et de
renvoyer le contenu au client.
Node.js exécute une programmation asynchrone à un seul thread, non bloquante, qui
est très économe en mémoire.
1
Que peut faire Node.js ?
• Node.js peut générer du contenu de page dynamique
• Node.js peut créer, ouvrir, lire, écrire, supprimer et fermer des fichiers sur le
serveur
• Node.js peut collecter des données de formulaire
• Node.js peut ajouter, supprimer, modifier des données dans votre base de données
===========================================================================
Node.js Démarrer
Télécharger Node.js
Le site Web officiel de Node.js contient des instructions d'installation pour
Node.js : https://nodejs.org
Commencer
Une fois que vous avez téléchargé et installé Node.js sur votre ordinateur, essayons
d'afficher "Hello World" dans un navigateur Web.
myfirst1.js
Pour l'instant, vous n'avez pas besoin de comprendre le code. Il sera expliqué plus tard.
La façon d'ouvrir l'interface de ligne de commande sur votre ordinateur dépend du système
d'exploitation. Pour les utilisateurs de Windows, appuyez sur le bouton de démarrage et
recherchez "Invite de commandes", ou écrivez simplement "cmd" dans le champ de
recherche.
C:\Users\Your Name>_
Lancez "myfirst1.js":
Si quelqu'un essaie d'accéder à votre ordinateur sur le port 8080, il recevra un "Hello
World!" message en retour !
===========================================================================
3
Modules Node.js
Modules intégrés
Node.js possède un ensemble de modules intégrés que vous pouvez utiliser sans aucune
autre installation.
Consultez notre Référence des modules intégrés pour une liste complète des modules.
//serveur :
4
Exemple
Créez un module qui renvoie la date et l'heure actuelles :
exports.myDateTime = function () {
return Date();
};
Utilisez le mot- exports clé pour rendre les propriétés et les méthodes disponibles en
dehors du fichier de module.
Exemple
Utilisez le module "myfirstmodule" dans un fichier Node.js :
Notez que nous utilisons ./pour localiser le module, cela signifie que le module est situé
dans le même dossier que le fichier Node.js.
Enregistrez le code ci-dessus dans un fichier appelé " myfirst2.js ", et lancez le fichier :
"myfirst2.js":
Si vous avez suivi les mêmes étapes sur votre ordinateur, vous verrez le même résultat
que l'exemple : http://localhost:8084
5
===========================================================================
Exemple
var http = require('http');
Enregistrez le code ci-dessus dans un fichier appelé " myfirst3.js", et lancez le fichier :
Lancez myfirst3.js :
Si vous avez suivi les mêmes étapes sur votre ordinateur, vous verrez le même résultat
que l'exemple : http://localhost:8084
6
Ajouter un en-tête HTTP
Si la réponse du serveur HTTP est censée être affichée au format HTML, vous devez
inclure un en-tête HTTP avec le type de contenu correct :
Exemple
myfirst4.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('Hello World!');
res.end();
}).listen(8084);
Cet objet a une propriété appelée "url" qui contient la partie de l'url qui vient après le
nom de domaine :
myfirst5.js
Lancez myfirst5.js
http://localhost:8084/été
Produira ce résultat:
/ été
http://localhost:8084/hiver
Produira ce résultat:
/ hiver
Exemple
Divisez la chaîne de requête en parties lisibles :
=====
en francais
url.parse est une méthode du module url de la bibliothèque standard de Node.js, qui est
utilisé pour analyser une chaîne URL en ses parties composantes.
Cela produira un objet qui représente les composants de l'URL, tels que le protocole, le nom d'hôte, le port, le
nom de chemin, la chaîne de requête et le fragment.
8
Vous pouvez ensuite accéder aux composants individuels de l'URL en utilisant les propriétés de l'objet retourné,
comme parsedUrl.protocol ou parsedUrl.query.
=====
Lancez myfirst6.js:
L'adresse: http://localhost:8084/?year=2023&month=juillet
Produira ce résultat:
2023 July
En savoir plus sur le module URL dans le chapitre Module URL Node.js.
9
Exemple
URL Comme routage :
server.listen(8084);
//j'execute node modelHTTP.js puis j'execute dans le browser localhost:5000/home par
exemple
10
Module de système de
fichiers Node.js
var fs = require('fs');
Supposons que nous ayons le fichier HTML suivant (situé dans le même dossier que
Node.js) :
demofile1.html
11
Créez un fichier Node.js qui lit le fichier HTML et renvoyez le contenu :
Exemple
Obtenez votre propre serveur Node.js
Enregistrez le code ci-dessus dans un fichier appelé " t1.js ", et lancez le fichier :
Lancez t1.js:
Si vous avez suivi les mêmes étapes sur votre ordinateur, vous verrez le même résultat
que l'exemple : http://localhost:8084
12
2) Créer des fichiers
Le module File System propose des méthodes pour créer de nouveaux fichiers :
• fs.appendFile()
• fs.open()
• fs.writeFile()
1. fs.appendFile()
Cette méthode ajoute le contenu spécifié à un fichier. Si le fichier n'existe pas, le fichier
sera créé :
Exemple
Créez un nouveau fichier en utilisant la méthode appendFile() :
2. fs.open()
Cette méthode prend un mode d’ouverture comme deuxième argument, si le mode est "w"
pour "écriture", le fichier spécifié est ouvert en écriture. Si le fichier n'existe pas, un fichier
vide est créé :
Exemple
Créez un nouveau fichier vide en utilisant la méthode open() :
13
3. fs.writeFile()
Cette méthode remplace le fichier spécifié et son contenu s'il existe. Si le fichier n'existe
pas, un nouveau fichier, contenant le contenu spécifié, sera créé :
Exemple
Créez un nouveau fichier en utilisant la méthode writeFile() :
• fs.appendFile()
• fs.writeFile()
1. fs.appendFile()
Exemple
Ajouter un retour a la ligne et " On ajoute du texte" à la fin du fichier 'mynewfile1.txt ":
14
2. fs.writeFile()
Exemple
Remplacez le contenu du fichier "mynewfile3.txt":
Exemple
Supprimez "mynewfile2.txt":
15
5) Renommer les fichiers
Pour renommer un fichier avec le module File System, utilisez la fs.rename() méthode.
Exemple
Renommez "''mynewfile1.txt " en "'myrenamedfile.txt ":
16
==================================== Partie 3=======================================
Analysez une adresse avec la url.parse() méthode et elle renverra un objet URL avec
chaque partie de l'adresse en tant que propriétés.
Le code url.parse(adr, true) est utilisé pour analyser une URL et en extraire les
différentes parties qui la composent, telles que le protocole, l'hôte, le chemin, les
paramètres de requête, etc.
17
En résumé, le code url.parse(adr, true) analyse l'URL adr en tant qu'objet et
renvoie un objet contenant les différentes parties de l'URL.
Créez deux fichiers html et enregistrez-les dans le même dossier que vos fichiers node.js.
été.html
<!DOCTYPE html>
<html>
<body>
<h1>Summer</h1>
<p>I love the sun!</p>
</body>
</html>
hiver.html
<!DOCTYPE html>
<html>
<body>
<h1>Winter</h1>
<p>I love the snow!</p>
</body>
</html>
18
Créez un fichier t3.js Node.js qui ouvre le fichier demandé et renvoie le contenu au
client. Si quelque chose ne va pas, lancez une erreur 404 :
t3.js :
Lancez t2.js :
Si vous avez suivi les mêmes étapes sur votre ordinateur, vous devriez voir deux
résultats différents lors de l'ouverture de ces deux adresses :
http://localhost:8084/summer.html
19
Produira ce résultat:
Summer
I love the sun!
http://localhost:8084/winter.html
Produira ce résultat:
Winter
I love the snow!
20
SERIE EXERCICES
1) Créez un fichier texte "message.txt" et écrivez-y "Bonjour Node.js !" en utilisant la méthode
fs.writeFile().
2) Lisez le contenu du fichier "message.txt" à l'aide de la méthode fs.readFile() et affichez-le dans
la console.
3) Créez un dossier "documents" avec la méthode fs.mkdir().
4) Copiez le fichier "message.txt" dans le dossier "documents" avec la méthode fs.copyFile().
5) Supprimez le fichier "message.txt" avec la méthode fs.unlink().
6) Renommez le fichier "documents/message.txt" en "documents/nouveau-message.txt" avec la
méthode fs.rename().
7) Affichez la liste des fichiers et dossiers présents dans le dossier "documents" avec la méthode
fs.readdir().
8) Créez un fichier "data.json" contenant un objet avec des propriétés et des valeurs de votre
choix avec la méthode fs.writeFile().
9) Lisez le contenu du fichier "data.json" à l'aide de la méthode fs.readFile() et affichez-le dans la
console.
10) Modifiez une propriété de l'objet contenu dans le fichier "data.json" avec la méthode
fs.readFile(), puis écrivez les modifications dans le fichier avec la méthode fs.writeFile().
1) Utiliser le module 'url' pour extraire les paramètres de requête d'une URL donnée .
2) Utiliser le module 'url' pour extraire le chemin d'une URL donnée.
3) Utiliser le module 'url' pour résoudre une URL relative en une URL absolue.
4) Utiliser le module 'url' pour parser une URL donnée en ses différentes parties (protocole,
hôte, chemin, etc.).
5) Utiliser le module 'url' pour générer une URL à partir de ses différentes parties (protocole,
hôte, chemin, etc.).
6) Utiliser le module 'querystring' pour créer une chaîne de requête à partir d'un objet
JavaScript.
7) Utiliser le module 'querystring' pour parser une chaîne de requête en un objet JavaScript.
8) Utiliser le module 'url' pour ajouter des paramètres de requête à une URL existante.
9) Utiliser le module 'url' pour extraire le nom de domaine d'une URL donnée.
10) Utiliser le module 'url' pour vérifier si une URL est absolue ou relative.
21
CORRECTION SERIE EXERCICES
I) système de fichiers
1. Créez un fichier texte "message.txt" et écrivez-y "Bonjour Node.js !" en utilisant la méthode
fs.writeFile().
});
4. Copiez le fichier "message.txt" dans le dossier "documents" avec la méthode fs.copyFile().
22
5. Supprimez le fichier "message.txt" avec la méthode fs.unlink().
7. Affichez la liste des fichiers et dossiers présents dans le dossier "documents" avec la méthode
fs.readdir().
8. Créez un fichier "data.json" contenant un objet avec des propriétés et des valeurs de votre choix
avec la méthode fs.writeFile().
R1)
23
R2)
Dans cet exemple, j'ai créé un objet data qui contient des propriétés et des valeurs de mon choix, puis j'ai
converti cet objet en format JSON à l'aide de la méthode JSON.stringify(). J'ai ensuite utilisé la méthode
fs.writeFile() pour écrire le fichier "data.json" avec les données JSON. La fonction de rappel ((err) =>
{ ... }) est utilisée pour gérer les erreurs éventuelles lors de l'écriture du fichier.
24
======== JSON.stringify =========
Ce code utilise la méthode JSON.stringify() pour convertir un objet JavaScript en une chaîne de
caractères JSON.
Dans ce cas, le premier argument obj est l'objet à convertir en JSON. Le deuxième argument null
indique qu'aucune fonction de remplacement ne doit être utilisée lors de la conversion. Le
troisième argument 2 spécifie l'indentation de deux espaces à utiliser pour formater la chaîne
JSON résultante. Cela signifie que chaque niveau de profondeur de la structure JSON sera indenté
de deux espaces.
Le résultat de l'appel de JSON.stringify(obj, null, 2) est stocké dans une variable nommée
newData. Cette variable contiendra donc la chaîne JSON correspondante à l'objet initial obj avec
une indentation de deux espaces pour chaque niveau de profondeur.
=================
25
Dans cet exemple, j'ai utilisé la méthode fs.readFile() pour lire le contenu du fichier "data.json". La
fonction de rappel ((err, data) => { ... }) est utilisée pour gérer les erreurs éventuelles lors de la
lecture du fichier et récupérer le contenu du fichier. Le deuxième argument 'utf-8' est utilisé pour spécifier
l'encodage du fichier (ici, UTF-8). Ensuite, si une erreur se produit, elle est affichée dans la console. Si la lecture
est réussie, le contenu du fichier est affiché dans la console.
10. Modifiez une propriété de l'objet contenu dans le fichier "data.json" avec la méthode fs.readFile(),
puis écrivez les modifications dans le fichier avec la méthode fs.writeFile().
Dans cet exemple, j'ai utilisé la méthode fs.readFile() pour lire le contenu du fichier "data.json". La
fonction de rappel ((err, data) => { ... }) est utilisée pour gérer les erreurs éventuelles lors de la
lecture du fichier et récupérer le contenu du fichier. Ensuite, j'ai converti les données JSON en un objet
JavaScript à l'aide de la méthode JSON.parse(). J'ai modifié une propriété de cet objet (obj.age = 36;),
puis j'ai converti l'objet modifié en format JSON à l'aide de la méthode JSON.stringify() .
Enfin, j'ai utilisé la méthode fs.writeFile() pour écrire les modifications dans le fichier "data.json". La
fonction de rappel ((err) => { ... }) est utilisée pour gérer les erreurs éventuelles lors de l'écriture du
fichier.
26
II) URL
1) Utiliser le module 'url' pour extraire les paramètres de requête d'une URL donnée .
'http://example.com/page?name=John&age=30'
'http://example.com/page?name=John&age=30'
3) Utiliser le module 'url' pour résoudre une URL relative en une URL absolue.
Le code ci-dessus utilise le module url de Node.js pour résoudre une URL relative en une URL
absolue.
27
• La quatrième ligne utilise la fonction url.resolve() pour résoudre relativeUrl en une URL
absolue par rapport à baseUrl.
console.log(resolvedUrl);
• La cinquième ligne affiche le résultat obtenu dans la console.
La fonction url.resolve() utilise les deux arguments passés pour déterminer l'URL absolue finale
en les combinant de manière appropriée. Si l'argument relativeUrl commence par un /, il est
résolu par rapport à l'URL de base. Si l'argument relativeUrl ne commence pas par un /, il est
résolu par rapport au chemin de l'URL de base. Dans ce cas, l'URL de base n'a pas de chemin
spécifié, donc l'URL relative est simplement concaténée à l'URL de base.
4) Utiliser le module 'url' pour parser une URL donnée en ses différentes parties (protocole, hôte, chemin,
etc.).
28
5) Utiliser le module 'url' pour générer une URL à partir de ses différentes parties (protocole, hôte, chemin,
etc.).
6) Utiliser le module 'querystring' pour créer une chaîne de requête à partir d'un objet JavaScript.
7) Utiliser le module 'querystring' pour parser une chaîne de requête en un objet JavaScript.
29
8) Utiliser le module 'url' pour ajouter des paramètres de requête à une URL existante.
9) Utiliser le module 'url' pour extraire le nom de domaine d'une URL donnée.
10) Utiliser le module 'url' pour vérifier si une URL est absolue ou relative.
Ce code utilise le module url de Node.js pour analyser et extraire des informations à partir d'une URL.
const url = require('url');
La première ligne importe le module url en tant que constante url. Cela permet au code d'utiliser les
fonctions et les propriétés du module url dans le reste du programme.
30
La première instruction console.log(url.parse(absoluteUrl).protocol); affiche le protocole de
l'URL absolue (http:) sur la console.
31
==================================== Partie 4=======================================
NPM Node.js
Le programme NPM est installé sur votre ordinateur lorsque vous installez Node.js
Les modules sont des bibliothèques JavaScript que vous pouvez inclure dans votre projet.
3) Télécharger un package
Le téléchargement d'un package est très simple.
Ouvrez l'interface de ligne de commande et dites à NPM de télécharger le package
souhaité.
NPM crée un dossier nommé "node_modules", où le package sera placé. Tous les
packages que vous installerez à l'avenir seront placés dans ce dossier.
32
3) Utilisation d'un package
Une fois le package installé, il est prêt à être utilisé.
1. express:
• Fonctionnalité: Création d'applications web et d'API.
• Exemple d'utilisation:
2. mongoose:
• Fonctionnalité: Interaction avec des bases de données MongoDB.
• Exemple d'utilisation:
mongoose.connect('mongodb://localhost:27017/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const catSchema = new mongoose.Schema({
name: String,
race: String
});
const Cat = mongoose.model('Cat', catSchema);
3. lodash:
• Fonctionnalité: Collection de fonctions utilitaires pour manipuler des données et des objets.
• Exemple d'utilisation:
const _ = require('lodash');
33
==================================== Partie 5=======================================
Événements Node.js
Node.js est parfait pour les applications événementielles.
1) L'objet "readStream" : Cet objet est utilisé pour lire des fichiers dans Node.js.
Lorsqu'un fichier est lu à l'aide de cet objet, plusieurs événements sont déclenchés,
notamment "open", "data", "end" et "error". L'événement "open" est déclenché lorsque
le fichier est ouvert et prêt à être lu. L'événement "data" est déclenché chaque fois qu'une
partie du fichier est lue. L'événement "end" est déclenché lorsque la fin du fichier est
atteinte. Enfin, l'événement "error" est déclenché si une erreur se produit pendant la
lecture du fichier.
Exemple 1
const fs = require('fs');
const readStream = fs.createReadStream('monfichier.txt');
readStream.on('open', function () {
console.log('File is open');
});
readStream.on('end', () => {
console.log('Lecture du fichier terminée.');
});
34
2) L'objet "http" : Cet objet est utilisé pour créer un serveur HTTP dans Node.js. Lorsqu'un
client envoie une demande à ce serveur, plusieurs événements sont déclenchés,
notamment "request", "connection", "close" et "error". L'événement "request" est
déclenché chaque fois qu'une demande est reçue. L'événement "connection" est
déclenché chaque fois qu'un client se connecte au serveur. L'événement "close" est
déclenché lorsque la connexion est fermée. Enfin, l'événement "error" est déclenché si une
erreur se produit pendant le traitement de la demande.
Exemple 2
const http = require('http');
server.on('connection', function () {
console.log('Client connected');
});
server.on('close', function () {
console.log('Server closed');
});
server.listen(8084, function () {
console.log('Server started on port 8084');
});
console.log('Adresse: http://localhost:8084/');
setTimeout(function() {
server.close();
}, 10000);
Lorsque vous exécutez ce code, un serveur HTTP est créé et écoutera les
requêtes entrantes sur le port 8084. Lorsqu'une demande est reçue, le serveur
renverra une réponse avec le message "Hello World!". Vous pouvez accéder au
serveur en ouvrant un navigateur et en accédant à l'adresse
"http://localhost:8084/". Le message "Adresse: http://localhost:8084/" est
également affiché sur la console.
Lorsque le serveur est fermé, le message "Server closed" sera affiché sur la
console.
2) Module Événements
---
Voici les étapes de base pour travailler avec des événements dans Node.js :
1) Importez le module events : Pour commencer à travailler avec des événements, vous
devez importer le module events dans votre code.
myEmitter.on('event', () => {
console.log('Un événement a été déclenché !');
});
myEmitter.once('eventOnce', () => {
console.log('Cet événement ne sera déclenché qu\'une seule fois.');
});
myEmitter.emit('event');
myEmitter.emit('eventOnce');
a) myEmitter.removeListener('event', listener);
b) myEmitter.removeAllListeners('event');
37
const EventEmitter = require('events');
Dans cet exemple, la méthode removeListener est utilisée pour supprimer l'écouteur
d'événement "messageHandler" de l'événement "message" attaché à l'émetteur
"myEmitter".
b) Méthode myEmitter.removeAllListeners('event'):
La méthode removeAllListeners est utilisée pour supprimer tous les écouteurs d'un
événement spécifique ou de tous les événements attachés à un émetteur d'événement.
La gestion des événements est une technique importante en Node.js, car elle permet de
créer des applications performantes et évolutives. Elle est particulièrement utile pour les
38
applications qui doivent gérer de nombreux événements en même temps, comme les
serveurs Web ou les applications en temps réel.
--------------------------
3) EXEMPLES
Exemple 1 :
--------------
var events = require('events');
var eventEmitter = new events.EventEmitter(); // syntaxe CommonJS
Dans l'exemple ci-dessous, nous avons créé une fonction qui sera exécutée lorsqu'un
événement "cri" est déclenché.
Pour déclencher un événement, utilisez la emit() méthode.
--------------
Exemple 2 :
--------------
39
Exemple 3 :
Lorsque cet exemple est exécuté, la fonction de gestion d'événements enregistrée est
appelée et affiche le message "L'événement "myEvent" a été émis avec les données
suivantes : { message: 'Ceci est un message' }" dans la console.
--------------
Exemple 4 :
40
// Abonnement à l'événement 'maNotification'
monInstance.on('maNotification', () => {
console.log('La notification a été reçue.');
});
SERIE EXERCICES
1) Créer un programme Node.js qui utilise le module 'events' pour créer et gérer des
événements personnalisés.
2) Créer un programme Node.js qui utilise le module 'events' pour créer et gérer des
événements personnalisés avec des arguments.
3) Créer un programme Node.js qui utilise le module 'events' pour créer et gérer plusieurs
événements personnalisés avec des arguments et un événement personnalisé pour signaler la
fin de l'exécution.
4) Créer un programme Node.js qui lit le contenu d'un fichier texte, en supprime toutes les
voyelles, puis écrit le résultat dans un nouveau fichier texte.
5) Créez un EventEmitter qui écoute une variable de comptage et qui émet un événement
chaque fois que le compteur atteint un multiple de 10. Ajoutez un écouteur d'événements qui
se déclenche chaque fois qu'un multiple de 10 est atteint et qui affiche le nombre de fois que
le compteur a été atteint.
41