Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
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".
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.
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.
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
Il faut bien sûr installer Node.js et ensuite se familiariser avec la console Node.
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
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.
À Partir de la console Node vous pouvez exécuter des scripts Node.
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.
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" ;
Il est simple de créer un serveur web avec Node.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.
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.
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");
On veut que le navigateur retourne un texte au format HTML.
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 message dans le navigateur apparait en gras et italique conformément au balisage.
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.
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
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".
// 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.
Dans le navigateur le message "bonjour tout le monde" s'affiche en italique mais surtout en majuscules.
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".
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');
Dans la barre d'URL saisissez "localhost:8080/?dupont&jacques
Le navigateur affiche : /?dupont&jacques
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
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 :
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"
Il faut requérir au module events. Ce module n'est pas installé nativement.
// 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'.
Attention la méthode getMonth() retourne un entier compris entre 0 et 11 !
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.
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 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.
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.
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 ...