DEV Community

Cover image for Créer un backend en Javascript (partie 2) : Le système de module NodeJS
 Eric Le Codeur
Eric Le Codeur

Posted on • Edited on

Créer un backend en Javascript (partie 2) : Le système de module NodeJS

Voici une série d'articles qui vous permettra créer des applications backend en Javascript.

Node.js est aujourd'hui un incontournable, il est donc essentiel pour un développeur 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


Les Modules NodeJS

Écrire du code dans un fichier c'est bien beau mais si votre application est moindrement importante, votre fichier va vite devenir trop volumineux.

C'est pourquoi il est préférable de séparer votre code en plusieurs modules (fichier) afin de rendre le code réutilisable et beaucoup mieux structuré

Voici un exemple

app.js

const name = 'Mike Taylor'

const greeting = function (name) {
    console.log(`Bonjour ${name}, bienvenue en NodeJS`)
}

greeting(name)
Enter fullscreen mode Exit fullscreen mode

Il pourrait être intéressant de rendre le module greeting réutilisable. Pour ce faire nous allons le placer dans son propre fichier appeler greeting.js

const greeting = function (name) {
    console.log(`Bonjour ${name}, bienvenue en NodeJS`)
}
Enter fullscreen mode Exit fullscreen mode

Par défaut NodeJS ne permet pas d'utiliser cette fonction à partir d'un autre module. Pour ce faire il faut indiquer au module quels éléments devront être "exportable" :

const greeting = function (name) {
    console.log(`Bonjour ${name}, bienvenue en NodeJS`)
}

module.exports = greeting
Enter fullscreen mode Exit fullscreen mode

À noter ici la dernière ligne 'module.exports = greeting', cette fonction permet l'utilisation de la fonction greeting à partir d'un autre module.

À partir de app.js vous pouvez maintenant charger ce module avec la fonction 'require'

const greeting = require('./greeting.js')

const name = 'Mike Taylor'
greeting(name)
Enter fullscreen mode Exit fullscreen mode

La fonction 'require' va créer une référence avec le module greeting et placer cette référence dans la variable const greeting (cette variable aurait pu s'appeler un autre nom que greeting)

À noter que la fonction 'require(./greeting.js') utilise le path './' cela permet d'indiquer a NodeJS que notre module se trouve dans le même dossier que notre fichier app.js

Exportation multiple

Il est possible d'exporté plusieurs éléments avec la fonction module.exports. Voici un exemple: person.js

const name = 'Mike Taylor'
const car = 'Ford Mustang'

module.exports = { name, car }
Enter fullscreen mode Exit fullscreen mode

L'export multiple se fait donc avec un objet qui contient plusieurs éléments.

const person = require('./person.js')

console.log(person.name, person.car)
Enter fullscreen mode Exit fullscreen mode

À noter que la variable 'person' ne pointe par sur le 'name' ou 'car' directement, elle pointe sur l'objet qui est exporté. Donc pour retourné son contenu nous devons utiliser 'person.name'

Exportation multiple (syntaxe alternative)

Il est possible d'exporté plusieurs éléments avec la fonction module.exports. Voici un exemple: person.js

const name = 'Mike Taylor'
const car = 'Ford Mustang'

module.exports.name = name
module.exports.car = car
Enter fullscreen mode Exit fullscreen mode

L'utilisation reste la même :

const person = require('./person.js')

console.log(person.name, person.car)
Enter fullscreen mode Exit fullscreen mode

Il est également possible d'utiliser la deconstruction

const { name, car } = require('./person.js')

console.log(name, car)
Enter fullscreen mode Exit fullscreen mode

La fonction 'require' exécute le module

Lorsque l'on utilise la fonction require, le module chargé est exécuté. Voici un exemple

// hello.js

const hello = function () {
    console.log('Hello World')
}

modules.exports = hello
Enter fullscreen mode Exit fullscreen mode
// app.js

const hello = require('./hello.js')
Enter fullscreen mode Exit fullscreen mode

Dès que NodeJS exécute cette ligne, le module hello est également exécuté. Dans cette exemple, le module ne fait qu'un export mais si le module contenait du code, il serait exécuté, voici une exemple

// hello.js

const hello = function () {
    console.log('Hello World')
}

console.log('Bonjour Node !')

modules.exports = hello
Enter fullscreen mode Exit fullscreen mode
// app.js

const hello = require('./hello.js')

hello()
Enter fullscreen mode Exit fullscreen mode

Si vous lancé app.js, vous verrez qu'il affichera 'Bonjour Node !' avant le 'Hello World' car comme mentionné, le 'require' exéctue le module.

Bref, tenez compte de ce fait lorsque vous créer vos modules afin d'éviter des comportement indésirable.

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).

Top comments (6)

Collapse
 
oreoyona profile image
oreoyona

Hâte de découvrir la suite

Collapse
 
merite15 profile image
Merite15

Excellent article très bien construit et très instructif et je voulais savoir si vous allez aussi parler d'express js

Collapse
 
ericlecodeur profile image
Eric Le Codeur

Oui j'ai plusieurs articles sur Express déjà écrits. Ils vont suivre bientôt

Collapse
 
merite15 profile image
Merite15

J'attends ça avec impatiente

Collapse
 
pacalexandrecosta profile image
pacalexandrecosta

J'ai adoré lire un article technique en français. j'attends les prochains

Collapse
 
ericlecodeur profile image
Eric Le Codeur

Merci pour les bons mots. J'en fais question de fierté d'écrire dans ma langue maternelle.