Accueil

Traduction

Tutoriel sur Javascript

Recherche dans ce tuto

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Introduction à Node.js

JavaScript a longtemps été cantonné à un emploi "côté client". Ce langage était alors utilisé pour créer des pages interactives.
Pour les accès aux bases de données il fallait utiliser un langag orienté serveur ; le plus utilisé étant PHP.
Sachez que cette époque est révolue. L'environnement Node.js permet désormais d'utiliser JavaScript "côté serveur".

Présentation de Node.js

Node.js est un environnement d'exécution open-source, multi-plateformes, qui permet aux développeuses de créer toutes sortes d'applications et d'outils côté serveur encodées en JS.
Grâce à Node.js vous pouvez donc utiliser JavaScript en dehors du navigateur.

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 interroger une base de données : lire, ajouter, supprimer des lgnes d'une table de la base, etc.

Node.js utilise le même moteur JavaScript que le navigateur Chrome (moteur V8) ; l'exécution d'un programme Node est donc très rapide.

Les limites de Node.js

Attention Node.js ce n'est pas toujours la panacée !
Imaginons comme thématique l'ajout d'une ligne à une table (d'une base MySQL ou SQLite) via un formulaire HTML (afin d'avoir une saisie contrôlée).
Avec le couple HTML-PHP, la code est fort simple : une simple page web contenant du code HTML5 et un script en PHP (pour la connexion à la base et appel d'une requête SQL de type INSERT).
Obtenir le même rendu avec Node.js demande une programmation qui peut paraître déroutante au départ ...
PHP reste encore une solution pertinente pour le développement "back-end" de sites web.
Tuto sur PHP dans mon site

Premiers pas avec Node.js

Il faut bien sûr installer Node.js et ensuite se familiariser avec la console Node.

Installation de node.js

Il s'agit d'abord d'installer cet environnement sur votre ordinateur.
L'installation de Node.js sous Windows ne pose pas de problème particulier.
Il suffit de se rendre sur le site nodejs.org et de suivre les instructions

La console Node

Maintenant que vous avez installé Node sur votre PC, vous pouvez utiliser cet environnement.
Il faut d'abord lancer l'invite de commmandes en tapant cmd dans la zone "Rechercher" de la barre des tâches.
Vous pouvez aussi sélectionner "Terminal" dans la menu contextuel lorsque vous cliquez sur l'icône "démarrer".
Dans les deux cas on parlera de "console windows".

Quelques commandes à saisir dans la console windows :

PS C:\Users\darch> node -v
v22.19.0
PS C:\Users\darch> node
Welcome to Node.js v22.19.0.
Type ".help" for more information.

> function multi(a,b) {return a*b; }
undefined
> multi(10,15)
150
> multi(5,8)
40
> Math.PI
3.141592653589793
> Math.random()
0.15216264361258802
> var unedate = new Date()
undefined
> unedate
2025-09-16T09:00:53.184Z

J'ai tapé la commande "node -v" pour connaitre la version installée de Node.js (j'aurais pu écrire "node --version").
Puis j'ai saisi la commande "node" pour accéder plus précisément à la console Node.
Enuite j'ai défini une fonction "multi" qui retourne le produit de deux valeurs.
J'ai appelé cette fonction deux fois.
J'ai ensuite saisi des expressions JS de l'objet Math bien connues.
J'ai aussi créé un objet Date.
Pour quitter la console Node et donc revenir à la console windows tapez .exit.

Donc pour testez la syntaxe JS, il existe une alternativez à la console du navigateur : la console Node.

Exécuter un script dans la console Node

À Partir de la console Node vous pouvez exécuter des scripts Node.

Le script

test.js est un programme Node stocké dans le dossier "documents\prog_node".

Le script :

console.log("afficher les pairs de 1 à 100");
for (var i =2; i <=100; i+=2) 	console.log(i);

Les programmes Node sont très succincts.
La boucle permet d'afficher les nombres paires compris entre 2 et 100 ; i est en effet incrémenté de 2.

Exécuter le script

PS C:\Users\darch> cd documents\prog_node
PS C:\Users\darch\documents\prog_node> node test.js
afficher les pairs de 1 à 100
2
4
6
8
10
12
...

À partir de l'invite de commandes j'ai produit la commande DOS cd documents\prog_node pour accéder à ce réperetoire.
j'ai saisi ensuite la commande "node test.js" ;

Créer un serveur web basique avec Node.js

Il est simple de créer un serveur web avec Node.js.

Code du programme "creer_serveur.js"

L'exemple qui suit crée un serveur web qui écoute une requête sur l'URL localhost:8080.
Quand une requête est reçue, le script répond en affichant la chaine "Bonjour tout le monde".
Le script tient en quelques lignes :

var http = require("http"); 
var message = function(requete,resultat)
{
	resultat.end("Bonjour tout le monde"); 
}
var serveur = http.createServer(message); 
serveur.listen(8080);
console.log ("serveur sur port 8080"); 

Exécutez ce programme à partir de l'invite de commmandes ; tapez donc "node creer_serveur.js" (après avoir séléctionner le répertoire "prog_node" dans "documents" via la commande DOS cd).
La console affiche : "Serveur sur port 8080"
Ouvrez alors le navigateur ; tapez en guise d'URL "localhost:8080"; le message "Bonjour le monde" s'affiche dans la fenêtre.
Pour fermer le serveur produisez la commande CTRL+C dans la console.

Explication du script

Le module "http" est un des multiples modules ("packages") de Node.js
Ce module a la particularité d'être nativement installé ; pour les autres modules il faut préalablement les installer via un un gestionnaire de paquets : NPM.

Une variable nommée "message" est créée par une fonction.
Cette fonction est appelée lorqu'il y a création du serveur Web.

Le serveur est créé au port 8080 et affiche la contenu de la variable message

Pour créer un serveur web il faut utiliser la méthode createServer() de l'objet http ; la méthode listen() du serveur précise le port.
La commande CTRL+C dans la console supprime le serveur web.

Script - autre syntaxe

Si vous préférez une écriture plus concise.

var http = require('http');
http.createServer(function (requete, resultat) {
  resultat.end('Bonjour le monde !');
}).listen(8080);
console.log ("serveur sur port 8080"); 

Un serveur web plus sophistiqué

On veut que le navigateur retourne un texte au format HTML.

Le script

var http = require("http"); 
var message = function(requete,resultat)
{
	resultat.writeHead(200, {'Content-Type': 'text/html'});
	resultat.end('Bonjour tout le  monde ! ');
}
var serveur = http.createServer(message); 
serveur.listen(8080);
console.log ("serveur sur port 8080"); 

J'ai rajouté l'instruction "resultat.writeHead(200, {'Content-Type': 'text/html'})". *
Le premier argument est le code d'état, 200 signifie que tout est OK, le deuxième argument est un objet contenant les en-têtes de réponse.
Cette instruction précise que le message adressé au serveur est au format HTML.

La méthode resultat.end() est argumentée par une instruction HTML (balises B & I encadrant du texte).

Le rendu

Le message dans le navigateur apparait en gras et italique conformément au balisage.

Qu'est-ce que le NPM

NPM (Node Package Manager) est un gestionnaire de modules ("packages") de Node.js.
Lorsque vous installez Node.js, NMP est aussi installé d'office.
Les modules sont des bibliothèques JavaScript que vous pouvez inclure dans le script.

Télécharger un "package"

Pour installer un module il suffit de produire (dans la console Windows) la commande : npm install nomModule.
Exemple : je souhaite télécharger un package appelé "upper-case" ; il suffit de taper : npm install upper-case

Message converti en majuscules

Thème : nous voulons que le message "bonjour tout le monde" soit affiché en majuscules.
Il suffit d'inclure dans le script le module "upper-case".

Le programme

// nom du scrip : majuscule.js
var http = require("http"); 
var uc = require('upper-case')
var message = function(requete,resultat)
{
	resultat.writeHead(200, {'Content-Type': 'text/html'});
	resultat.end(uc.upperCase("bonjour tout le monde ! "));
}
var serveur = http.createServer(message); 
serveur.listen(8080);
console.log ("serveur sur port 8080"); 

Pour que le script fonctionne, il faut bien sûr avoir installé auparavant le module "upper-case".
Notez la syntaxe : result.end(uc.upperCase("bonjour tout le monde ! ")). Il faut donc que le message retourné au serveur soit l'argument de la méthode upperCase() de l'objet uc.

Le rendu

Dans le navigateur le message "bonjour tout le monde" s'affiche en italique mais surtout en majuscules.

Lire une chaine de requête

Il est possible de récupérer ce qui a été saisi dans la barre d'URL après le nom de domaine grâce à la propriété "url" de l'objet "req".

Le script

var http = require('http');
var serveur = http.createServer(function (requete, resultat) 
{
  resultat.writeHead(200, {'Content-Type': 'text/html'});
  resultat.write(requete.url);
  resultat.end();
}); 
serveur.listen(8080);
console.log('Serveur web sur  localhost:8080');

Le rendu

Dans la barre d'URL saisissez "localhost:8080/?dupont&jacques
Le navigateur affiche : /?dupont&jacques

Le module url

Pour une analyse pointue d'un URL il faut faire appel au module "url" et à sa méthode parse().
Je rappelle que le verbe "to parse" veut dire analyser.
Le module "url" est natif donc aucune installation nécessaire avec NPM

Exemple 1

L'url est dans le script.
Le script:

// nom programme : manipuler_url.js
const url = require("url"); 
 const source = "https://darchevillepatrick.info/js/js31.php "  
 // url d'une page de mon site
 const page = url.parse(source); 
 
 console.log ("Protocole : " + page. protocol); 
 console.log ("Domaine : " + page.hostname); 
 console.log ("Chemin : " + page.pathname)

Pour obtenir l'objet "page" on applique la méthode parse() à l'url.
L'objet "page" peut alors être analysé gràce à différentes propriétés : protocol, hostname, pathname,etc.

Le rendu :
La console Node retourne :

Exemple 2

Cette fois il faut analyser l'url saisie dans le navigateur.
Le script est forcément un peu plus complexe :

// nom programme : manipuler_url2.js
var http = require('http');
var url = require('url');
var serveur = http.createServer(function (requete, resultat) {
  resultat.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(requete.url, true).query;
  var texte = q.year + " " + q.month;
  resultat.end(texte);
});
serveur.listen(8080);
console.log('Serveur web  localhost:8080');
console.log("Saisir dans la barre d'url : localhost:8080/?year=2023&month=June"); 

Le rendu :
Saisir dans la barre d'URL du navigateur : 'localhost:8080/?year=2023&month=June'
Attention aucun espace dans la saisie !
Le navigateur retourne : "2023 june"

Programmer des événements

Il faut requérir au module events. Ce module n'est pas installé nativement.

Script

// events1.js
const Events = require("events"); 
var emitter = new Events(); 
// création d'un gestionnaire d'événements

emitter.on ('instant',(date) =>
	{console.log(date.getDate() + " " + date.getMonth()  +" " + date.getFullYear()); }); 
// création d'une fonction d'écoute qui sera exécutée à chaque émission de l'évènement 'instant'

// émissions d'événements 'instant' avec comme argument un objet Date. 
emitter.emit('instant',new Date()); 
emitter.emit('instant',new Date('1953-03-03')); ; 

Notez l'emploi de la méthode emit() de l'objet emitter. pour émettre un événement 'instant'.

Le rendu

Attention la méthode getMonth() retourne un entier compris entre 0 et 11 !

Liste des packages installés

Il suffit de taper la commande nmp list à partir de l'invite de commandes.

C:\Users\darch>npm list
darch@ C:\Users\darch
+-- events@3.3.0
`-- upper-case@2.0.2

Deux packages installés.

Attention il faut au prélable sortir de la console node.

C:\Users\darch>node
Welcome to Node.js v22.19.0.
Type ".help" for more information.
> npm list
npm should be run outside of the Node.js REPL, in your normal shell.
(Press Ctrl+D to exit.)

Ci-dessus j'ai un message d'erreur car j'ai demandé la liste des package installé à partir de la console node.

Créer ses propres modules

Nous voulons que les dates apparaissent avec un format très explicite pour un francophone. Du genre : lundi 24 juillet 2023 à 19:17:40
JavaScript propose désormais le constructeur Intl.DateTimeFormat pour formater proprement et rapidement des dates. A partir de cet objet paramétré la méthode format() retourne la date au format défini.
Pour en savoir plus sur le constructeur Intl.dateTimeFormat

Le script de "monModule.js"

Le fichier est enregistré dans le dossier "documents/prog_node", bien sûr.

// nom module : monModule.js
function dateHeure(dt)
{
	var international = new Intl.DateTimeFormat("fr-FR", 
	{hour12 : false, weekday : "long", year : "numeric" , month : "long", day : "numeric", 
	hour : "2-digit", minute : "2-digit", second : "2-digit"}); 

	return international.format(dt); 
}

// Instruction pour construire un module perso 
exports.dateHeure = dateHeure; 

Notez la dernière instruction qui indique que le fonction dateHeure devient publique.

Utilisation du module perso

Le script de "emploiModule.js"

Le fichier enregistré dans le dossier "documents/prog_node", bien sûr.

// nom script : emploiModule.js
const monModule = require("./monModule.js"); 
var date1 = new Date(); 
console.log (monModule.dateHeure(date1)); 
var date2 = new Date('1995-12-17T03:24:00');
console.log (monModule.dateHeure(date2));

const monModule = require("./monModule.js") : appel du module perso.
"./" indique que le fichier à appeler est dans le même répertoire que le script principal.

console.log (monModule.dateHeure(date1)) : Formatage de la date courante en utilisant la fonction dateHeure du module perso.

Le rendu

Script exécuté le 25 juillet 2023.

mardi 25 juillet 2023 à 08:55:35
dimanche 17 décembre 1995 à 03:24:00

Vous apprenez que le 17 décembre 1995 était un dimanche ...