Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site
Dans ce chapitre nous allons aborder de nouveaux modules dont "fs" (File system).
Pour appeler le module "fs" il suffit bien sûr d'écrire : const fs = require("fs")
Le module "fs" est nativement installé donc aucune commande NPM n'est nécéssaire.
Dans mon dossier "prog_node" il existe non seulement des scripts Node mais aussi quelqeus pages web dont une qui est nommée "page_test.htm".
Le code de cette page (extrait) :
Il s'agit donc d'une page web parfaitement structurée.
Notez également que les fonctions anonymes s'imbriquent.
En supposant que vous ayez nommé le programme ci-dessus 'lire_page.js'
tapez la commande : node lire_page.js.
Lancez le navigateur et tapez en guise d'URL : http://localhost8080 ; la page "page_test.htm" s'affiche dans la fenêtre du navigateur.
Devoir disposer d'un programme par fichier à ouvrir n'est guère pratique. Il faut prévoir un script générique qui peut ouvrir n'importe quelle page web, à charge pour l'utilisateur de saisir le nom du fichier.
Dans le dossier "prog_node", il existe d'autres pages web : ete.htm & hiver.htm
Le code de la page web "hiver.htm" :
Le code de la page "ete.htm" est identique sauf le contenu de H1 et du paragraphe.
Ce programme permet d'afficher dans le navigateur une des pages web ou un message d'erreur éventuel.
Il y a trois modules qui sont inclus dans le programme car ce dernier doit "parser" l'URL saisie, traiter un fichier et créer un serveur web.
L'objet url et sa méthode parse() ont été évoqués dans le chapitre précédent.
Dans ce script il y a gestion d'une éventuelle erreur : if (err) return res.end(" erreur 404 : fichier non trouvé")
Les trois tests provoquent successivement l'affichage des trois pages web existantes.
La page "automne.htm" n'existe pas ; il y a alors affichage de d'un message d'erreur dans le navigateur : "erreur 404 : page web inconnue"
Pour certaines applications, il faut lire/écrire des données permanentes donc stockées dans un fichier texte.
Dans les programmes qui sont évoqués dans la suite de ce chapitre, je n'utilise pas de serveur web mais seulement la console Node.
La méthode fs.writeFile() remplace l'ancien contenu par le contenu précisé si le fichier existe. Si le fichier n'existe pas encore, il est crée avec le contenu spécifié.
Notez qu'il y a un gestion des erreurs éventuelles.
L'instruction throw expression génère un message d'erreur.
Cette instruction a été abordée dans le chapitre sur la gestion des erreurs en JS
à partir de la console Node, exécuter plusieurs fois ce script.
Basculez dans l'explorateur Windows et constatez que le fichier "nouveau.txt" existe bien.
Ouvrez le avec un éditeur tel NotePad ; vous constatez qu'il ne contient toujours qu'une ligne de texte.
La méthode fs.appendFile() ajoute le contenu spécifié à un fichier. Si le fichier n'existe pas encore, il sera créé avec le contenu précisé.
Il s'agit donc d'une méthode plus souple que "fs.writeFile()".
Ce programma crée ou ajoute une ligne dans "texte.txt"
Notez la balise BR dans le texte (saut de ligne).
Pour simplifier encore davantage la syntaxe, j'ai utilisé la notaton fléchée pour la fonction anonyme.
Exécuter N fois ce script à partir de la console Node puis utiliser le programme "serveur_page.js" pour afficher son contenu dans le navigateur.
Le fichier contient autant de lignes que d'exécution du programme.
Notez que le balisage HTML (balise BR) est pris en compte par le navigateur.
Encore un programme particulièrement succinct.
Exécutez ce script à partir de la console Node puis vérifiez via l'explorateur Windows que le fichier "texte.txt" a bien été renommé
"textenouveau.txt".
Exécutez de nouveau ce script ; il y a alors un message d'erreur puisqu'il y a gestion des erreurs (if (err) throw err) et que le fichier
"texte.txt" n'existe plus !
Grâce à un éditeur de textes tel NotePad, dupliquez trois fois "textenouveau.txt" respectivement sous les noms "texte1.txt", "texte2.txt" et "texte3.txt".
J'ai employé la méthode fs.unlink() pour supprimer un fichier.
Exécutez ce programme trois fois avec à chaque fois modification du code : remplacer "texte1.txt" par "texte2.txt" puis par "texte3.txt") .
On en peut se satisfaire de cette solution bancale.
Il faudrait que le code fasse référence à une variable contenant le nom du fichier à supprimer.
Mais comment renseigner une variable dans un script Node ?
Il faut faire appel au module "prompt-sync" !
Ce module permet de gérer les entrées au clavier de façon synchrone.
Bien évidemment j'ai installé auparavant ce module avec le gestionnaire NPM.
Attention l'appel du module est particulier : require('prompt-sync')()
Le module prompt-sync crée une fonction d'invite que vous devez appeler d'où la paire de parenthèses obligatoire en fin d'instruction.
Désormais nous sommes capables de concevoir un programme node qui supprime le fichier dont le nom n'est plus dans le code mais est précisé par l'utilisateur.
nom_fichier désigne une variable donc pas de guillemets !
Exécutez trois fois ce script en saisissant successivment : "texte1.txt" puis "texte2.txt" et enfin "texte3.txt".
Affichez le répertoire après l'avoir actualisé ; les trois fichiers texte ont bien disparu !
Nous avons déjà utilisé quelques modules.
On peut avoir des doutes sur ce qui est déjà installé et ce qui ne l'est pas.
Il suffit de tapez dans l'invite de commandes : npm ls.
Le rendu :
Certains packages ont été installés mais pas encore présentés : express, formidable mongod, etc.
L'installation du package prompt est une maladresse de ma part ; prompt-sync est un module plus récent et surtout, comme
vous avez pu le constater, très facile à utiliser.
D'autres modules ne sont pas dans la liste car ils sont natifs : http, url,fs, events, etc.