在node.js(ES6 / Babel)中导入X和导入* as X之间的区别?

left4bread:

我有一个lib用ES6(与Babel编译编写的node.js库在其中导出了以下子模块:

"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;

如果从我的主要项目中,我包括这样的图书馆

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

我可以看到正确的输出,并且可以按预期工作{ config: ... }但是,如果我尝试包含这样的库:

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

会的undefined

有人可以解释这里发生了什么吗?这两种导入方法不应该等效吗?如果没有,我想念什么?

loganfsmyth:
import * as lib from 'lib';

正在请求一个具有所有“ lib”命名出口的对象。

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

被命名为exports,这就是为什么您最终得到一个像您一样的对象的原因。

import lib from 'lib';

正在要求default出口lib例如

export default 4;

lib === 4它不会获取命名的导出。要从默认导出中获取对象,您必须显式地执行

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章