Créer un backend en Javascript (partie 2) : Le système de module NodeJS
Tags: javascript, node, express, beginners
Published: 2021-09-30 11:28:52

---
title: Créer un backend en Javascript (partie 2) : Le système de module NodeJS
published: true
description: 
tags: javascript, nodejs, express, beginner
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f1qn7uw1ymkntxsgx3tu.png
series: node101
---

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
<hr>

## 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

```jsx
const name = 'Mike Taylor'

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

greeting(name)
```

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

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

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" :

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

module.exports = greeting
```

À 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'

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

const name = 'Mike Taylor'
greeting(name)
```

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

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

module.exports = { name, car }
```

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

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

console.log(person.name, person.car)
```

À 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.<exportname> Voici un exemple: person.js

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

module.exports.name = name
module.exports.car = car
```

L'utilisation reste la même :

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

console.log(person.name, person.car)
```

Il est également possible d'utiliser la deconstruction

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

console.log(name, car)
```

### La fonction 'require' exécute le module

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

```jsx
// hello.js

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

modules.exports = hello
```

```jsx
// app.js

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

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

```jsx
// hello.js

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

console.log('Bonjour Node !')

modules.exports = hello
```

```jsx
// app.js

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

hello()
```

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