3.3. Importer uniquement les éléments nécessaires

Encore une fois, on en sait assez sur CommonJS pour commencer nos développements Node.js, mais… il existe une petite astuce pour optimiser notre code. En plus, cela devrait nous servir assez souvent.

Reprenons notre exemple précédent avec le module pokedex.js, qui exporte plusieurs méthodes :

// pokedex.js
const pokemonList = ['Bulbizzare', 'Salamèche', 'Carapuce']
 
exports.getPokemonByIndex = (index) => {
  return pokemonList[index]
};
 
exports.getPokemonCount = () => {
  return pokemonList.length
};
 
// app.js
const pokedex = require('./pokedex')
 
console.log(`Il y a ${pokedex.getPokemonCount() } dans le pokédex`)
console.log(`Le premier pokémon s'apelle ${pokedex.getPokemonByIndex(1) }`) 

Eh bien, on pourrait se passer de l’utilisation du module pokedex dans app.js, en important directement les méthodes qui nous intéressent :

// app.js
const { getPokemonByIndex, getPokemonCount } = require('./pokedex')
 
console.log(`Il y a ${getPokemonCount() } dans le pokédex`)
console.log(`Le premier pokémon s'apelle ${getPokemonByIndex(1) }`) 

En ajoutant seulement des accolades autour de vos importations, à la ligne 1, vous pouvez choisir d’importer uniquement les éléments qu’ils vous faut. C’est assez pratique dans certains cas, surtout si vous souhaitez importer uniquement quelques éléments d’un module.

La syntaxe à retenir est la suivante :

const { a, b, c } = require('some-module')

Pour ceux que ça intéresse, sachez que cette étrange syntaxe ne nous viens pas de Common JS, mais d’ECMAScript 6. On parle d’affectation destructurée . Et c’est du pur JavaScript cette fois. 🙂

Et bien voilà, on a bien démystifié les modules JavaScript et le format CommonJS. Il ne nous reste plus qu’à voir rapidement ce que peuvent bien être les modules avec Node.js, et on sera bon !

Allez, en avant !