【问题标题】:ES6 `export * from import`?ES6 `export * from import`?
【发布时间】:2016-06-28 13:09:03
【问题描述】:

是否有使用 ES6 或 ES7 或 babel 的语法可以让我轻松地将多组子文件捆绑在一起?

例如,给定:

./action_creators/index.js
./action_creators/foo_actions.js
./action_creators/bar_actions.js

让 index.js 导入 foo 和 bar 动作,然后重新导出它们,这样我就可以了

import {FooAction, BarAction} from './action_creators/index.js'

如果我要更改将对象本身组织到哪个文件中,我不想记住/更改引用。

【问题讨论】:

    标签: javascript ecmascript-6 babeljs


    【解决方案1】:

    是的,ES6 支持直接导出导入的模块

    export { name1, name2, …, nameN } from …;
    
    export {FooAction, BarAction} from './action_creators/index.js'
    

    您还可以使用* 语法重新导出导入模块的所有导出

    export * from …;
    
    export * from './action_creators/index.js';
    

    More info on MDN.

    【讨论】:

    • 这个answer 为我工作了export { default as foo } from './foo';
    • 这不起作用export * as something from './something'。有什么想法吗?
    • @Qwerty 您目前不能像这样导出为命名空间。有关它的建议,请参阅github.com/tc39/proposal-export-ns-from。在此期间您可以做的一件事是:``` import * as Something from './something';出口{东西}```
    • 如果export * from ... 的后续两行导出具有相同名称的命名函数会发生什么?我的意思是,如果export * from 'a';export * from 'b'ab 都定义了一个同名的函数并将其导出,例如:export function fn() { ... }...
    • 我是来找我为什么不能用export * as something from .......哈哈哈
    【解决方案2】:

    默认导出为默认

    export {default} from './something';
    

    默认导出为命名

    export {default as foo} from './something';
    

    命名导出为默认

    export {foo as default} from './something';
    

    命名导出为命名

    export {foo} from './something';
    

    已命名导出为已重命名

    export {foo as bar} from './something';
    

    【讨论】:

    • export * from './something';怎么样
    • All Named 导出为所有 Named
    猜你喜欢
    • 2017-01-17
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2021-11-11
    • 2012-08-30
    • 2016-02-10
    相关资源
    最近更新 更多