Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
October 4, 2021 09:44 am GMT

Crer un backend en Javascript : Manipulation de fichiers et dossiers avec NodeJS

Voici une srie d'articles qui vous permettra crer des applications backend en Javascript.

Node.js est aujourd'hui un incontournable, il est donc essentiel pour un dveloppeur de le maitriser.

Je vais donc publier un nouvel article environ au deux jours et petit petit vous apprendrez tout ce qu'il y a savoir sur Node.js

Pour ne rien manquer suivez moi sur twitter : https://twitter.com/EricLeCodeur

Modules inclut avec NodeJS

NodeJS est livr avec plusieurs modules avec des fonctions qui vous permettent d'excuter facilement les tches les plus courantes.

Vous verrez plus tard qu'il est galement possible d'ajouter d'autres modules cr par la communaut et d'tendre les fonctionnalits de votre application de faon presque illimit.

Ici je vais vous prsenter seulement quelques exemples de modules NodeJS. Vous pouvez consulter la documentation de NodeJS pour le dtails complets des modules et de leurs fonctionnements. https://nodejs.org/en/docs/

Le module Path

Le module 'path' contient des fonctions qui permettent de traiter adquatement les emplacements de dossier et fichiers

Pour rfrencer un module, il suffit d'utiliser son nom

const path = require('path')products_path = '/data/products/products.json'products_file = path.basename(products_path)console.log(products_file) // products.json

La fonction path.basename() permet de retourner le nom du fichier seulement donc dans ce cas-ci 'products.json'

Une autre fonction pratique est path.join(). Cette fonction permet de joindre ensemble un ou plusieurs dossier et fichier. exemple :

const path = require('path')data_folder = '/data/'products_folder  = '/products'products_file = 'products.json'const full_path = path.join(data_folder, products_folder, products_file)console.log(full_path) // /data/products/products.json

path.join() concatne tous les segments de chemin donns en utilisant le sparateur spcifique la plate-forme comme dlimiteur, puis normalise le chemin rsultant

Enfin, parfois vous aimeriez avoir la path absolue sur le serveur

const path = require('path')data_folder = '/data/'products_folder  = '/products'products_file = 'products.json'const full_path = path.join(data_folder, products_folder, products_file)const abs_path = path.resolve(__dirname, 'data', 'products', 'products.json')console.log(abs_path)// /Users/username/Documents/dev/learn_node/data/products/products.json

path.resolve() traite la squence de chemins de droite gauche, chaque chemin suivant tant ajout jusqu' ce qu'un chemin absolu soit construit.

Le module File System

Sans doute un des module les plus utilis, ce module permet de manipuler les fichiers et dossiers sur le serveur

Le module FS permet la manipulation des fichiers et dossiers de deux faon diffrentes. Vous pouvez le faire en mode synchrone ou asynchrone.

Fonctions synchrones

Cela signifie que cette fonction est bloquante, NodeJS attendra le retour de la fonction avant de continuer l'excution de l'application.

Fonctions asynchrones

Cela signifie que NodeJS n'attendra pas que la fonction retourne une valeur, il va continuer l'excution de votre application et quand la fonction sera termin, il traitera le rsultat.

Quelle mthode utiliser ?

a dpend du type d'application que vous dsirez dvelopper. Si par exemple vous dvelopper un serveur web et bien dans ce cas il est prfrable, pour ne pas dire essentiel, d'utiliser une fonction asynchrone. Une fonction synchrone bloquerait l'excution du serveur non seulement pour l'usager en cours mais galement bloquerait tous les autres usager.

Par contre dans certain cas trs prcis l'utilisation d'une fonction synchrone peut tre justifi. Par exemple, avant de lancer un serveur web, si vous devez lire un fichier contenant la configuration de ce serveur, dans ce cas, une fonction synchrone vous garantie la lecture du fichier avant le lancement du serveur.

Bref, de faon gnral, utilis toujours une fonction asynchrone et seulement au besoin, une fonction synchrone.

Voyons un exemple d'utilisation du module 'fs' avec les deux types de fonctions :

Fonction synchrone

// app.jsconst fs = require('fs')const data = fs.readFileSync('info.txt', 'utf-8')console.log(data) // file contentconsole.log('Le fichier a t lu')

Ici c'est simple, le code s'excutera ligne par ligne.

Fonction asynchrone

const fs = require('fs')const info = fs.readFile('info.txt', 'utf-8', (err, data) => {    console.log(data)})console.log('Le fichier a t lu')

Ici la fonction readFile sers lanc en mode asynchrone, donc NodeJS n'attendra pas le retour de la fonction pour continuer l'excution.

Ce qui aura comme consquence d'afficher 'le fichier t lu' en premier et seulement lorsque la fonction readFile aura termin sont travail, NodeJS excutera la fonction callback soit console.log(data)

Lecture et cration d'un fichier

noter que pour le suite de ce tutoriel nous allons utiliser seulement les fonctions asynchrones.

D'abord nous allons crer un fichier text. Pour ce faire nous allons utiliser la fonction writeFile

const fs = require('fs')const data = 'This is my Hello World file'fs.writeFile('info.txt', data, 'utf-8', (err) => {    console.log('File created')})

La fonction writeFile() est assez auto-descriptive. Vous devez spcifier le nom du fichier, les donnes et l'option d'encodage. (utf-8 pour le texte)

Si vous excut ce code, le fichier info.txt sera crer dans le dossier en cours.

Ensuite il sera possible de lire ce fichier avec la fonction readFile

const fs = require('fs')const info = fs.readFile('info.txt', 'utf-8', (err, data) => {    console.log(data)})

Si le fichier n'existe pas vous pouvez retourner une erreur

const info = fs.readFile('info.txt', 'utf-8', (err, data) => {    if (err)         console.log(err)    else        console.log(data)})

Il est galement possible de lire un fichier avec readFile mais en utilisant les promesses.

const fs = require('fs').promisesconst start = async () => {    const data = await fs.readFile('info.txt', 'utf8')    console.log(data)}start()

Diffrente syntaxe, mme rsultat

Copier un fichier

Pour copier un fichier nous utilisons la fonction copyFile

fs.copyFile('info.txt', 'info2.txt', (err) => {      if (err) return console.error(err)        console.log('File copied')})

Crer un dossier

Pour crer un dossier nous utilisons la fonction mkdir

fs.mkdir('data', (err) => {    console.log('Data folder created')})

Le dossier est crer l'intrieur du dossier en cours

Lecture des fichiers d'un dossier

Il est possible d'obtenir la liste des fichiers d'un dossier

fs.readdir('.', (err, files) => {    console.log(files)})

'.' reprsente le dossier en cours

Renommer un fichier

Pour renommer un fichier nous utilisons la fonction rename

fs.rename('info.txt', 'data.txt', (err) => {    if (err) return console.log(err)    console.log('File renamed')})

Les possibilit sont presque infini !

Vous avez maintenant une base avec le module 'fs' si vous dsirez connaitre toutes les fonctions disponible, consulter le site de NodeJS pour tous les dtails:

https://nodejs.org/api/fs.html

Conclusion

C'est tout pour aujourd'hui, suivez moi sur twitter : https://twitter.com/EricLeCodeur afin d'tre avis de la parution du prochain article (d'ici deux jours).


Original Link: https://dev.to/ericlecodeur/creer-un-backend-en-javascript-manipulation-de-fichiers-et-dossiers-avec-nodejs-2i6

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To