2017-04-08 15 views
8

ライブラリーからすべてをハッシュとしてインポートし、修正して、再エクスポートします。としょうかん。例:javacript es6でエクスポートと呼ばれる `...`スプレッド演算子を使用

import * as reactBootstrap from 'react-bootstrap'; 

wrappedReactBootstrap = doFunnyThingsTo(reactBootstrap); 

export { 
    ...wrappedReactBootstrap 
}; 

// or 
export wrappedReactBootstrap; 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/exportの私の理解では、次のようなことはできません。誰かが確認できますか?

明らかに、エクスポートとインポートのステートメントはトップレベルでなければならないので、ループは問題になりません。

答えて

10

オブジェクトレストスプレッドはstage 3 proposalであり、スペックの一部ではありません(おそらくES2018に含まれます)。

さらに重要なことに、exportには、既存のJS構文を模倣する構文がありますが、{ ... }は式として解釈されません。 export syntax was strictly defined ES2015モジュールは静的に解析されるためです。これは利点の1つですが、開発者はエクスポートとインポートを明示的に指定する必要があります。

{ ...wrappedReactBootstrap }は動的エクスポートを導入しています(ここではこの目的のために使用されています)。これはES2015モジュールexportではサポートされていないため、そうなる可能性は非常に低いです。

エクスポートに動的な動作を提供する必要がある場合は、名前付きオブジェクトまたはデフォルトオブジェクトとしてエクスポートおよびインポートできます。

import * as reactBootstrap from 'react-bootstrap'; 

export default doFunnyThingsTo(reactBootstrap); 

、明らか

import wrappedReactBootstrap from '...'; 

const { funny, thing } = wrappedReactBootstrap; 

のように使用するには、ES2015の利益を得ることはありませんwrappedReactBootstrapオブジェクトがこのようにモジュール、例えば木を振る。

関連する問題