ライブラリ内のすべての名前付きエクスポートを知らなくても、ライブラリからすべてをハッシュとしてインポートし、それを変更して、変更されたハッシュを再エクスポートしようとしています。例えば:
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 についての私の理解は、以下は仕様で許可されていないということです。誰かが確認できますか?
言うまでもなく、exportステートメントとimportステートメントは最上位でなければならないため、ループは問題外です。
オブジェクトレストスプレッドは ステージ3の提案 であり、仕様の一部ではありません(ES2018に含まれる可能性があります)。
さらに重要なことに、export
には既存のJS構文を模倣する構文がありますが、{ ... }
を式として解釈しません。 export
構文は厳密に定義されました ES2015モジュールは静的に分析されることになっているためです。これは利点の1つですが、開発者はエクスポートとインポートを明示的に指定する必要があります。
{ ...wrappedReactBootstrap }
は動的エクスポートを導入しているため(この目的のためにここで使用されました)、ES2015モジュールexport
ではサポートされておらず、サポートされる可能性はほとんどありません。
エクスポートに動的な動作を提供する必要がある場合は、名前付きまたはデフォルトのオブジェクトとしてエクスポートおよびインポートできます。
import * as reactBootstrap from 'react-bootstrap';
export default doFunnyThingsTo(reactBootstrap);
そして、
import wrappedReactBootstrap from '...';
const { funny, thing } = wrappedReactBootstrap;
当然のことながら、wrappedReactBootstrap
オブジェクトはこの方法でES2015モジュールのメリットを得られません。木の揺れ。