import

par 2 contributeurs :

Cette fonction, proposition pour ECMAScript 6 (Harmony), est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

L'instruction import est utilisée pour importer des fonctions exportées depuis un module externe ou un autre script.

Note : Cette fonctionnalité n'est, à l'heure actuelle, implémentée dans aucun navigateur de façon native. Elle est disponible via certains transpileurs tels que Traceur Compiler et ES6 Module Transpiler.

Syntaxe

import nom from "nom-module";
import { membre } from "nom-module";
import {membre as alias } from "nom-module";
import { membre1 , membre2 } from "nom-module";
import { membre1 , membre2 as alias2 , [...] } from "nom-module";
import nom , { member [ , [...] ] } from "nom-module";
import "nom-module" as nom;
nom
Le nom de l'objet qui reçoit les valeurs importées.
membre, membreN
Le nom des membres exportés qui seront importés.
alias, aliasN
Le nom de l'objet qui recevra la propriété importée.
nom-module
Le nom du module à importer. Cela correspond au nom de fichier du module.

Description

Le paramètre nom est le nom de l'objet qui recevra les membres exportés. Les paramètres membre permettent de définir des membres individuels. La syntaxe utilisant le paramètre nom permet quant à elle d'importer tous les membres. nom peut aussi être une fonction si le module exporte un seul paramètre par défaut plutôt qu'une suite de membres. Les exemples ci-après explicitent cette syntaxe.

Pour importe le contenu complet d'un module, on pourra utiliser le fragment de code suivant. Il permet d'insérer monModule dans la portée courante, monModule contiendra tous les éléments exportés.

import monModule from "mon-module.js";
import "mon-module.js" as monModule; // équivalent à l'instruction précédente

L'instruction qui suit permet d'importer un seul membre d'un module. Ici on insère unMembre dans la portée courante :

import {monMembre} from "mon-module.js";

Pour importer plusieurs membres d'un module, on pourra utiliser l'instruction suivante qui insère toto et truc dans la portée courante :

import {toto, truc} from "mon-module.js";

Pour importer le contenu entier d'un module avec également des membres nommés, on pourra utiliser le code qui suit. Celui-ci permet d'insérer monModule, toto, et truc dans la portée courante. On notera que toto et monModule.toto sont les mêmes et que truc et monModule.truc sont également équivalents.

import monModule, {toto, truc} from "mon-module.js";

Il est possible d'introduire un membre avec un alias. L'instruction qui suit utilise l'alias nomCourt pour insérer le membre dans la portée courante :

import {unNomDeMembreVraimentLongPfiouu as nomCourt} from "mon-module.js";

Si on souhaite n'importer aucun membre mais réaliser les effets de bord d'un import, on pourra utiliser l'instruction suivante :

import "mon-module.js";

Exemples

Le fragment de code qui suite permert d'importer une fonctionnalité d'un autre fichier qui permet de traiter une requête AJAX JSON.

Voici le fichier secondaire qui définit la fonctionnalité

// fichier.js
function getJSON(url, callback) {
  let xhr = new XMLHttpRequest();
  xhr.onload = function () { callback(this.responseText) };
  xhr.open("GET", url, true);
  xhr.send();
}

export function getContenuUtile(url, callback) {
  getJSON(url, data => callback(JSON.parse(data)));
}

Et voici le fichier principal dans lequel on importe la fonctionnalité du module :

// main.js
import {getContenuUtile} from "fichier.js";
getContenuUtile("http://www.exemple.com", data => {
  faireQuelqueChose(data);
});

Spécifications

Spécification Statut Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Imports' dans cette spécification.
Standard Définition initiale

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple Pas de support[1] Pas de support[2] 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

[1] La fonctionnalité est partiellement supportée et peut être activée grâce à une option de la ligne de commande : --harmony-modules. Voir ce bogue V8 pour plus d'informations.
[2] Pour Firefox, voir : bug 568953.

Note spécifique à Firefox

Les instructions import et export faisaient partie d'une ancienne fonctionnalité de Netscape. Peu usitées, elles ont été retirées à partir de Firefox 3.5 (bug 447713).

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, teoli
Dernière mise à jour par : SphinxKnight,
Masquer la barre latérale