Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

634
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!