私はプラグインをインストールできるWebアプリケーションの構築について考えています。私は、プラグインをインストールした後にメインのJavaScriptバンドルを再コンパイルすることなく、ページにレンダリングされるReactコンポーネントを定義できるようにしたいと考えています。 WebPACKのを使用して、external libraryとして反応して動的に反応コンポーネントをロードする
- バンドルメインJavaScriptを:
だからここで私はと思っていたアプローチです。
- プラグイン作成者は、外部ライブラリとしてReactを使用してコンポーネントをコンパイルします。
このように、私はReactのインスタンスを1つだけ実行しています。他の頻繁に使用されるライブラリと同じことをやることもできます。
問題は、これらのプラグインコンポーネントをサーバーから動的にロードする方法です。どのようにgetPluginComponent
class PluginRenderer extends React.Component{
componentWillMount() {
getPluginComponent(`/plugins/${this.props.plugin}/component.js`).then((com) => {
this.setState({pluginComponent: com});
})
}
render() {
var Plugin = this.state.pluginComponent;
return Plugin ? <Plugin {...this.props} /> : "Loading..."
}
}
を実装することができますのは、私は次のコンポーネントがあるとしましょうか?
これを達成するには、NodeJSを使用してファイルシステムにアクセスするためのサーバー側のレンダリングが必要ですが、可能であれば、まだコンポーネントがBabelによって何らかの形でコンパイルされる必要があることを心に留めておいてください。実行時には発生しません。 – Foxhoundn
はい、コンポーネントをコンパイルする必要があることはわかっています。コンパイルされたソースは静的資産として提供されます。 – bigblind