Ich denke über den Aufbau einer Webanwendung, wo Menschen Plugins installieren können. Ich möchte, dass Plugins React-Komponenten definieren können, die auf der Seite gerendert werden, ohne das Haupt-JavaScript-Paket nach der Installation neu kompilieren zu müssen.Dynamisch laden Reagieren Komponenten
hier ist also der Ansatz, den ich von denke:
- Bundle das Haupt JavaScript mit Reagieren als external library, mit webpack.
- Lassen Sie Plugin-Autoren ihre Komponenten mit React als externe Bibliothek kompilieren.
Auf diese Weise ich nur eine Instanz von React ausführen. Ich könnte wahrscheinlich dasselbe mit einigen anderen häufig benutzten Bibliotheken tun.
Das Problem ist dann, wie diese Plugin-Komponenten vom Server dynamisch geladen werden. Lassen Sie uns sagen, dass ich die folgende Komponente:
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..."
}
}
Wie getPluginComponent
umgesetzt werden könnten?
Um dies zu erreichen, benötigt man serverseitiges Rendering mit NodeJS um auf das Dateisystem zuzugreifen und ich bin mir immer noch nicht sicher ob es möglich wäre, ohne dass die Komponente irgendwie von Babel kompiliert werden müsste das passiert nicht zur Laufzeit. – Foxhoundn
Ja, ich weiß, dass die Komponente noch kompiliert werden muss. Die kompilierte Quelle würde als statisches Asset dienen. – bigblind