puede módulo modules funcion exportar es6 convertir archivo javascript ecmascript-6 es6-module-loader

módulo - javascript import js



¿Cómo importar todo lo exportado desde un archivo con sintaxis ES2015? ¿Hay un comodín? (3)

¿Hay una sintaxis para la primera variante,

No.

o ¿tienes que importar cada cosa por nombre o usar el objeto de envoltura?

Sí.

Con la sintaxis de ES2015, tenemos la nueva sintaxis de importación, y he estado tratando de averiguar cómo importar todo lo exportado de un archivo a otro, sin tenerlo envuelto en un objeto, es decir. Disponible como si estuvieran definidos en el mismo archivo.

Así que, esencialmente, esto:

// constants.js const MYAPP_BAR = ''bar'' const MYAPP_FOO = ''foo''

// reducers.js import * from ''./constants'' console.log(MYAPP_FOO)

Esto no funciona, al menos según mi configuración de Babel / Webpack, esta sintaxis no es válida.

Alternativas

Esto funciona (pero es largo y molesto si necesita más de un par de cosas importadas):

// reducers.js import { MYAPP_BAR, MYAPP_FOO } from ''./constants'' console.log(MYAPP_FOO)

Al igual que esto (pero envuelve las constantes en un objeto):

// reducers.js import * as consts from ''./constants'' console.log(consts.MYAPP_FOO)

¿Hay una sintaxis para la primera variante, o tiene que importar cada cosa por nombre o usar el objeto de envoltura?



No puede importar todas las variables por comodín para la primera variante porque causa variables conflictivas si las tiene con el mismo nombre en diferentes archivos.

//a.js export const MY_VAR = 1; //b.js export const MY_VAR = 2; //index.js import * from ''./a.js''; import * from ''./b.js''; console.log(MY_VAR); // which value should be there?

Como aquí no podemos resolver el valor real de MY_VAR , este tipo de importación no es posible.

Para su caso, si tiene muchos valores para importar, será mejor exportarlos todos como objeto:

// reducers.js import * as constants from ''./constants'' console.log(constants.MYAPP_FOO)