nodejs node instead how exports es6 es5 and javascript node.js ecmascript-6 babeljs

javascript - instead - ¿Diferencia entre importar X e importar*como X en node.js(ES6/Babel)?



nodejs es6 module (3)

Solo agrego a Logan''s solución Logan''s porque entender la importación con paréntesis, * y sin resolver un problema para mí.

import * as lib from ''lib'';

es el equivalente de:

import {config, db, storage} as lib from ''lib'';

Donde * es similar a un comodín que importa todas las export var desde lib.

export var config; export var db; export var storage;

Alternativamente, usando:

import lib from ''lib'';

Le permite acceder solo a la exportación predeterminada:

// lib.js export default storage;

El uso de {} también solo importa componentes específicos del módulo, lo que reduce la huella con los paquetes como Webpack.

Mientras:

import storage, { config, db } from ''./lib''

importaría todos los módulos, incluido export default storage;

Vea la respuesta de Dan Abramov: ¿ Cuándo debo usar llaves para importar ES6?

Tengo una biblioteca de biblioteca node.js escrita en ES6 (compilada con Babel ) en la que exporto los siguientes submódulos:

"use strict"; import * as _config from ''./config''; import * as _db from ''./db''; import * as _storage from ''./storage''; export var config = _config; export var db = _db; export var storage = _storage;

Si de mi proyecto principal incluyo la biblioteca como esta

import * as lib from ''lib''; console.log(lib);

Puedo ver la salida correcta y funciona como se esperaba { config: ... } . Sin embargo, si trato de incluir la biblioteca de esta manera:

import lib from ''lib''; console.log(lib);

Será undefined .

¿Alguien puede explicar lo que está pasando aquí? ¿No se supone que los dos métodos de importación son equivalentes? Si no, ¿qué diferencia me estoy perdiendo?


import X from Y; Es una sintaxis de azúcar.

import lib from ''lib'';

es igual a

import {default as lib } from ''lib'';


import * as lib from ''lib'';

está pidiendo un objeto con todas las exportaciones nombradas de ''lib''.

export var config = _config; export var db = _db; export var storage = _storage;

se denominan exportaciones, por lo que terminas con un objeto como lo hiciste.

import lib from ''lib'';

está solicitando la exportación default de lib . p.ej

export default 4;

haría lib === 4 . No recupera las exportaciones nombradas. Para obtener un objeto de la exportación predeterminada, tendría que hacer explícitamente

export default { config: _config, db: _db, storage: _storage };