【发布时间】:2017-06-27 10:40:36
【问题描述】:
我正在考虑构建一个 Web 应用程序,人们可以在其中安装插件。我希望插件能够定义将呈现到页面的 React 组件,而无需在安装插件后重新编译主 JavaScript 包。
所以这是我正在考虑的方法:
- 使用 webpack 将主 JavaScript 与 React 捆绑为 external library。
- 让插件作者也使用 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 怎么实现?
【问题讨论】:
-
为了实现这一点,您需要使用 NodeJS 进行服务器端渲染来访问文件系统,但我仍然不确定是否可行,请记住该组件仍然需要由 Babel 以某种方式编译,并且不会在运行时发生。
-
是的,我知道组件仍然需要编译。编译后的源代码将用作静态资产。
标签: javascript reactjs webpack