2.6 Exportations & Importations

Une caractéristique clé du JavaScript moderne est la modularité : pouvoir découper son code en plusieurs fichiers et les relier entre eux avec des import et des export. En React, c'est la façon standard de structurer une application : chaque composant est généralement dans son propre fichier, et on l'importe là où on en a besoin.

Deux types d'exports

  • export default : un seul export par défaut par fichier.
  • export nommé : plusieurs exports possibles avec leur nom.
  • import avec accolades pour les exports nommés.
  • Possibilité d'utiliser un alias avec as.

Avec export default, l'élément exporté peut être importé sous n'importe quel nom dans l'autre fichier. À l'inverse, un export nommé oblige à utiliser le nom exact (entre accolades) lors de l'import. On peut aussi tout regrouper avec import * as Module pour accéder ensuite aux exports comme propriétés de cet objet.

// person.js
const person = { name: "Mathieu" };
export default person;

// utility.js
export const clean = () => { /* ... */ };
export const baseData = 10;

// app.js
import person from "./person";
import { clean, baseData } from "./utility";
import { baseData as data } from "./utility";
import * as Bundled from "./utility";

Cette syntaxe d'import/export est au cœur du JavaScript moderne. Tous les navigateurs ne la supportent pas nativement, c'est pourquoi un projet React utilise un outil comme Babel pour compiler ce code dans une version comprise partout. Dans la prochaine vidéo, nous verrons justement comment configurer un projet capable d'utiliser sans souci toutes ces fonctionnalités de nouvelle génération.

En résumé

Cette leçon explique les modules ES6, permettant de diviser le code JavaScript en plusieurs fichiers avec dépendances explicites. Elle couvre deux approches : l'export par défaut (une seule valeur, importable sous n'importe quel nom) et les exports nommés (plusieurs éléments, importés par leur nom exact ou avec alias). Le chapitre aborde aussi la compatibilité navigateur et les variations syntaxiques d'importation.

Points clés

  • Code modulaire : partager du contenu entre fichiers JavaScript avec dépendances explicites via export/import
  • Export par défaut : une seule valeur par fichier, renommable librement à l'import
  • Exports nommés : plusieurs éléments exportés, importés obligatoirement par leur nom exact ou via un alias
  • Syntaxe avec accolades : import { element } depuis './file.js' pour les exports nommés
  • Alias d'import : renommer à l'import avec le mot-clé 'as' (ex: import { clean as cleanFunction })
  • Import global : import * as alias depuis './file.js' pour charger tous les exports dans un objet

Questions fréquentes

Quelle est la différence entre export par défaut et export nommé ?

L'export par défaut permet une seule valeur par fichier, que l'import peut renommer librement. Les exports nommés exigent l'utilisation du nom exact ou d'un alias, en utilisant les accolades.

Pourquoi le cours mentionne-t-il la compatibilité navigateur ?

Les modules ES6 ne fonctionnent pas de la même façon dans tous les navigateurs, même les modernes. Un compilateur (abordé au prochain module) convertit le JavaScript nouvelle génération en version compatible actuelle.

Comment importer plusieurs éléments nommés depuis un fichier ?

Utiliser les accolades avec les noms exacts des exports : import { clean, baseData } depuis './utility.js', ou charger tous les exports dans un objet avec import * as utils depuis './utility.js'.