我正在考虑构建一个 Web 应用程序,人们可以在其中安装插件。我希望插件能够定义将呈现到页面的 React 组件,而无需在安装插件后重新编译主 JavaScript 包。
所以这是我正在考虑的方法:
- 使用 webpack将主要 JavaScript 与 React 作为外部库捆绑在一起。
- 让插件作者也使用 React 作为外部库编译他们的组件。
这样,我只运行了一个 React 实例。我可能可以对其他一些经常使用的库做同样的事情。
那么问题是如何从服务器动态加载这些插件组件。假设我有以下组件:
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..."
}
}
如何getPluginComponent
实施?