如何在ES6中导出导入的对象?

用例很简单:我只想导出一个名称与导入的对象。

例如:

import React from 'react'; export React; 

但是这不起作用。 我必须写:

 import React from 'react'; export const React = React; 

但是这很奇怪。 什么是正确的方法来做到这一点?

更新

感谢您的帮助和参考。 我用很多线索解决了我的问题。 我想分享一些常见案例和解决scheme。

出口import

 import d, {obj} from '...'; export {obj, d}; export {obj as name1, d as name2}; 

重新导出所有命名的导入

 export * from '...'; export * as name1 from '...'; 

重新导出一些命名的导入

 export {a, b as name1} from '...'; 

重新导出默认导入作为默认导出

 export {default} from '...'; 

将默认导入重新导出为命名导出

 export {default as name1} from '...'; 

我经常在组成几个文件的index.js文件中执行以下操作:

 export {default as SomeClass} from './SomeClass'; export {someFunction} from './utils'; export {default as React} from 'react'; 

这个博客提供了一些很好的附加示例。

重要的提示

访问这些导出的导入时,应该意识到这个eslint规则 。 基本上,在另一个文件中,你不应该:

 import SomeClassModule from 'SomeClass/index.js'; SomeClassModule.someFunction(); // Oops, error 

你应该做这个:

 import SomeClassModule, {someFunction} from 'SomeClass/index.js'; someFunction(); // Ok 

你可以用这样的结构导出导入的文件

 import First from './First' import Second from './Second' /..../ export { First, Second } 

您应该能够export {React}并通过import {React} from ./module导入它

有关更多信息,请参阅https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export

鉴于./foo.js

 const Foo = class { talk() { return 'hello'; } }; export default Foo; 

那么你应该可以做到这一点:

 import Foo from './foo'; let foo = new Foo(); foo.talk(); // => 'hello'; 

语法或多或less遵循commonjs module.exports模式,你可以这样做:

 const Foo = class { }; module.exports = Foo; 

更多在这里:

http://exploringjs.com/es6/ch_modules.html