【问题标题】:import all named exports under their export name without explicitly listing them [duplicate]以导出名称导入所有命名的导出而不明确列出它们[重复]
【发布时间】:2018-09-26 11:44:46
【问题描述】:

我有一个文件modules.js,它按模块名称从我的模块中导出所有default 导出(在ES6 exporting/importing in index file 之后):

export { default as a } from './a/a'
export { default as b } from './b/b'
...
export { default as y } from './y/y'
export { default as z } from './z/z'

在我的app.js 中,我想导入这个模块包。

我希望从 a...z 导出的变量从 module.js 导入,这样我就可以在 app.js 中使用它们。

显然我不想这样做

import { a, b, c, d, ... , x, y, z } from './modules/modules'

因为这非常冗长,每当我在module.js 中添加一个模块时,我还必须更改app.js 中的import

我试过了

import * from './modules/modules'

但变量在app.js 中不可用。

问题:我如何简单地导入 所有命名的导出 在它们的导出名称下

示例模块./modules/a/a.js:

export default function a() {
  // whatever
}

【问题讨论】:

  • 你可以这样做import m from './modules/modules' 并以m.am.b 的形式访问变量...我认为它不会花费很多。
  • @Mohit 这可能不会花费很多,但是如果没有所有者对象就不能导入吗?
  • 拥有来自import * as foo from ... 的模块命名空间对象无需额外费用。事实上,有了它,引擎可以提前知道变量来自哪里,从而更好地优化你的代码。
  • @connexo 据我所知,在当前版本的 ECMAScript 6 中没有任何可能实现您所期望的方式

标签: javascript ecmascript-6 es6-modules javascript-import


【解决方案1】:

试试 import * as sampleModule from './modules/modules'

您可以使用 sampleModule 变量来利用模块中的所有导出函数。

import * as sampleModule from './modules/modules'

import './modules/modules'

【讨论】:

  • 没有宿主对象就不能导入吗?
  • 最好使用下面的代码。导入'./modules/modules';
猜你喜欢
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多