Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

639
Visualizações
¿Diferencia entre importar X e importar * como X en node.js (ES6/Babel)?

Tengo una biblioteca lib de 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 librería así

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

Puedo ver el resultado adecuado y funciona como se esperaba { config: ... } . Sin embargo, si intento incluir la biblioteca de esta manera:

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

será undefined .

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

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

import * as lib from 'lib';

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


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

se denominan exportaciones, razón por la cual 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 obtiene 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 };
over 4 years ago · Santiago Trujillo Relatório

0

Simplemente agregando a la solución de Logan porque entender la importación con corchetes, * 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 de 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 el espacio ocupado con 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?

over 4 years ago · Santiago Trujillo Relatório

0

import X from Y; es un azúcar de sintaxis.

import lib from 'lib';

es igual a

import { default as lib } from 'lib';

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda