L'instruction export
est utilisée pour permettre d'exporter des fonctions et objets ou des valeurs primitives à partir d'un fichier (ou module) donné.
Note : Cette fonctionnalité n'est pas encore implémentée nativement par les navigateurs. En revanche, elle est gérée par de nombreux transpileurs comme Traceur, Babel ou Rollup.
Syntaxe
export { nom1, nom2, …, nomN }; export { variable1 as nom1, variable2 as nom2, …, nomN }; export let nom1, nom2, …, nomN; // fonctionne également avec var export let nom1 = …, nom2 = …, …, nomN; // également avec var, const export default expression; export default function (…) { … } // également avec class, function* export default function nom1(…) { … } // également avec class, function* export { nom1 as default, … }; export * from …; export { nom1, nom2, …, nomN } from …; export { import1 as nom1, import2 as nom2, …, nomN } from …;
nomN
- L'identifiant (de la propriété, de la fonction ou de l'objet) à exporter (qu'on pourra utiliser depuis un autre script grâce à
import
).
Description
Il existe deux types d'export, chacun correspondant à une des syntaxes présentées ci-avant :
- Les exports nommés :
export { maFonction }; // on exporte une fonction déclarée plus haut export const toto = Math.sqrt(2); // on exporte une constante
- Les exports par défaut (un seul par script) :
export default maFonctionOuClasse // pas de point-virgule // pour une déclaration
Les exports nommés permettent de rendre disponible plusieurs objets, quantités. Le nom utilisé dans chacun des exports pourra être utilisé réciproquement dans les imports pour désigner telle ou telle valeur qu'on souhaite récupérer.
Quant aux exports par défaut, on n'en trouvera qu'un seul pour chaque module. On pourra ainsi exporter une classe, une fonction, un objet ou une autre valeur qu'on pourra importer par ailleurs sans en connaître le nom. Ce sera en quelque sorte la valeur « principale » exportée, qu'on pourra réimporter simplement.
Exemples
Utiliser les exports nommés
Dans le module on pourra avoir :
// module "monModule.js" function cube(x) { return x * x * x; } const truc = Math.PI + Math.SQRT2; export { cube, truc };
De cette façon (cf. import
), depuis un autre script, on pourra avoir :
import { cube, truc } from 'monModule'; console.log(cube(3)); // 27 console.log(truc); // 4.555806215962888
Utiliser les exports par défaut
Si on souhaite n'exporter qu'une seule valeur ou avoir une valeur de fallback pour le module, on pourra exporter une valeur par défaut :
// module "monModule.js" export default function cube(x) { return x * x * x; }
On pourra ainsi, dans un autre script, importer très facilement ce qui est fourni par défaut :
import cube from 'monModule'; console.log(cube(3)); // 27
On ne peut pas utiliser var
, let
ou const
avec export default
.
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Exports' dans cette spécification. |
Standard | Définition initiale |
ECMAScript 2017 Draft (ECMA-262) La définition de 'Exports' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | Pas de support | Pas de support | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | Pas de support | Pas de support | Pas de support | Pas de support |
Voir aussi
import
- Article sur les modules, traduit en français depuis la série d'articles « ES6 in Depth »
- Livre d'Axel Rauschmayer sur les modules (en anglais)