59 votes

ES6 import équivalent de require() sans exports

En utilisant require(./filename) Je peux inclure et exécuter le code dans nom de fichier sans aucune exportation définie à l'intérieur nom de fichier lui-même.

Quel est l'équivalent dans ES6 en utilisant import ?

Merci

94voto

RGraham Points 15305

L'équivalent est simplement :

import "./filename";

Voici quelques-unes des variations syntaxiques possibles :

import defaultMember from "module-name";  

import * as name from "module-name";  

import { member } from "module-name";  

import { member as alias } from "module-name";  

import { member1 , member2 } from "module-name";  

import { member1 , member2 as alias2 , [...] } from "module-name";  

import defaultMember, { member [ , [...] ] } from "module-name";  

import defaultMember, * as name from "module-name";  

import "module-name";

SOURCE : MDN

5 votes

Cela semble en fait incorrect selon le même page que vous avez référencé dans votre réponse. Ce type d'importation exécutera le code mais ne conservera aucune référence aux variables qui sont définies (j'ai confirmé ce comportement dans mon projet également).

0 votes

@brandaemon pouvez-vous montrer un exemple de ce que vous entendez par "conserver les variables" ? Comment comparez-vous les deux ? Modules natifs contre NodeJS ou transpilation avec Babel ?

5 votes

Par exemple, si j'ai un fichier appelé code.js où j'ai const foo = 1; console.log(foo); et je dis import "code.js" sur main.js je n'aurai pas accès à foo à l'intérieur de main.js . Cependant, 1 sera imprimé sur la console puisque le code contenu dans le fichier code.js s'exécutera. Si c'est un peu difficile à suivre, voici une StackBlitz en démontrant ce que je fais.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X