ES6,如何在一行中导出导入的模块?


Answers:


194
export {default as Module} from './Module/Module';

这是标准的ES6方法,只要您不需要Module在导出模块的内部也可以使用。

export Module from './Module/Module';

是ESnext提议的一种实现方法,但是仅当您现在在Babel中启用它时,该方法才有效。


它工作得很好,但是,Webpack似乎不喜欢它,并发出通知,通知该包component现在是只读的并且无法进行热加载。很奇怪!
失谐

完美,这应该是公认的答案。(如果webpack热装不喜欢,那是该工具的问题,或者是HMR插件。)
Benja

18
如果有人想知道它是哪个babel插件,就在export-extensions这里-babeljs.io/docs/plugins/transform-export-extensions
Noitidart

@loganfsmyth是否可以默认导出以上内容?
lycuid

4
@ abhishek-kdm export { default as default } fromexport { default } from
loganfsmyth

25

我不知道为什么,但是这对我有用:

组件/index.js:

import Component from './Component';
import Component2 from './Component2';
import Component3 from './Component3';
import Component4 from './Component4';

export {Component, Component2, Component3, Component4};

我这样输入出口:

import {Component, Component2, Component3, Component4} from '../components';

23

请注意,您还可以重新导出模块中的所有内容:

export * from './Module/Module';

此通配符语法仅适用于具有命名导出的文件。如果该文件只有一个默认导出,则将出现错误“在模块中找不到命名的导出”。
dmbaughman

12

对于React Native组件,此语法适用于我:

export {default} from 'react-native-swiper';

当我希望重新导出导入的默认值时,这对我来说适用于React(不是Native)。我没有任何肝卵圆细胞应用到我的“纯”成分index.js文件使用
西拉

-1

因此,我发现这对于立即导出功能非常有效,因为index.jscomponents目录的根目录中有一个,可以方便地进行引用:

import Component from './Component/Component'
import ComponentTwo from './ComponentTwo/ComponentTwo'

module.exports = {
  Component,
  ComponentTwo
};

您需要使用module.exports


3
请记住,由于这是部分CommonJS模块,因此只能在Babel中专门使用,并且如果您尝试在真正的ES6模块中使用它,一旦对它们的支持落入更多环境中,它将失败,并且可能会在将来的版本中停止工作。巴别塔
loganfsmyth

正确。在Babel 6中混合commonJS和es6导入/导出中断。Babel5允许/加强了这种错误行为。在你的榜样,Component将不再是你的出口组件的引用,而是将是一个对象,你的实例引用住在Component.default
斯科特的Silvi

有人知道不使用该怎么做module.exports吗?我喜欢这种将一堆组件打包为的方法,index.js但无法弄清楚语法。 import x from 'x'; import y from 'y'; export default {x, y};import {x} from xy;行不通(我不知道为什么不行)
Alex McMillan

2
亚历克斯,您尝试了export {x, y}吗?
jtompl

此答案不是es6。这是一个非EcamScript平台。-1
rektide
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.