ES6でインポートしたオブジェクトをエクスポートする方法


242

使用例は簡単です。インポートしたときと同じ名前のオブジェクトをエクスポートしたいだけです。

例えば:

import React from 'react';
export React;

しかし、これは機能しません。私は書く必要があります:

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

しかし、これは奇妙です。これを行う正しい方法は何ですか?

更新

ヘルプとリファレンスをありがとう。私は多くの手掛かりで私の問題を解決しました。私とソリューションの一般的なケースをいくつか紹介したいと思います。

輸出輸入

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 '...';

なぜあなたは輸出に反応しますか?
omarjmh 2016年

可能ですがexport {React}、どこかでReactが必要な場合は、そこにインポートするだけです。
loganfsmyth 2016年

2
エクスポートの反応は単なる例です。実際、ユーザーがいくつかのオブジェクトをより短い高レベルのパスでインポートできるように、いくつかのプロジェクトを編成したいと考えています。
Yao Zhao

更新ありがとうございます。ES6 / 7で発生したすべての問題を解決しました。これを回答として追加して受け入れることをお勧めします。
Florian Wendelborn 16

12
export * as name1 from '...';これは私には機能しません(webpack 2を使用)。何か案は?
エンティティブラック

回答:


131

複数のファイルを構成する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

36

このような構造でインポートされたファイルをエクスポートできます

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

2

私の使用例では、babelがes7コードをes5にトランスパイルできるように、ある種の明示的なインポートステートメントを明示的に必要としています。

次の結果はエラーになりますYou gave us a visitor for the node type "ForAwaitStatement" but it's not a valid type

require( 'babel-core/register' ); //transpiles es7 to es5
export {default} from './module_name'

私の解決策は、以下を使用してモジュールを明示的にインポートすることでしたrequire()

require( 'babel-core/register' );
export default require( './module_name' ).default;

-1

与えられた./foo.js

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

export default Foo;

次に、これを行うことができるはずです:

import Foo from './foo';

let foo = new Foo();

foo.talk(); // => 'hello';

構文は多かれ少なかれcommonjs module.exportsパターンに従います。

const Foo = class {

};

module.exports = Foo;

詳細はこちら:

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


それは問題が何であったかについて完全ではありませんか?
Dan Dascalescu、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.