L’injection de dépendances est un modèle de conception très utilisé dans de nombreux langages de programmation, y compris JavaScript. Il s’agit d’une manière d’implémenter le principe d’inversion de contrôle (IoC) qui déplace la création et l’association d’objets dépendants en dehors de l’objet original. Voici comment le faire en JavaScript :
1. Utilisez les paramètres de fonction : La manière la plus simple d’injecter des dépendances en JavaScript est d’utiliser les paramètres de fonction. En d’autres termes, vous transmettez toutes les dépendances à un module par le biais de ses paramètres de fonction.
Exemple :
```
function myModule(dependency1, dependency2) {
// utilisez dependency1 et dependency2
}
```
1. Utilisez les modules CommonJS (Node.js) : En Node.js, l’injection de dépendances peut simplement être effectuée en utilisant `require()` pour importer des modules.
Exemple :
```
var dependency1 = require(‘dependency1’);
var dependency2 = require(‘dependency2’);
function myModule() {
// utilisez dependency1 et dependency2
}
```
1. Utilisez les importations ES6 : Avec ES6, nous pouvons utiliser le motif d’importation/exportation pour injecter des dépendances.
Exemple :
```
import dependency1 from ‘dependency1’;
import dependency2 from ‘dependency2’;
function myModule() {
// utilisez dependency1 et dependency2
}
```
1. Utilisez un conteneur d’injection de dépendances : Un conteneur d’injection de dépendances est un objet qui sait comment effectuer l’injection de dépendances dans un objet. Il fonctionne en construisant une instance de votre classe en résolvant toutes les dépendances pour vous.
Exemple avec le package “Awilix” :
```
const awilix = require(‘awilix’);
// Créez un conteneur.
const container = awilix.createContainer();
// Enregistrez certaines dépendances.
container.register({
dependency1: awilix.asValue(require(‘dependency1’)),
dependency2: awilix.asValue(require(‘dependency2’)),
});
// Résolvez les dépendances.
const {dependency1, dependency2} = container.resolve(‘dependency1’, ‘dependency2’);
function myModule() {
// utilisez dependency1 et dependency2
}
```
Gardez à l’esprit que l’injection de dépendances n’est pas un concept natif en JavaScript, et chaque environnement JavaScript a ses propres approches pour le gérer (Node.js avec CommonJS, applications front-end avec importation/exportation ES6, etc.).