Was ich bereits getan habe
Die App hat einen einzigen Einstiegspunkt, main.js, der eine gebündelte Version meiner Komponenten und Abhängigkeiten von react.js ist. Daher sieht meine index.html normalerweise so aus:
%Vor%Was ich tun möchte
Wie kann ich damit umgehen, wenn ich bedenke, dass meine App eine Single Page Application ist? Ich möchte weder das Rad neu erfinden noch meinen Code duplizieren. Welche Art von node.js Server muss ich schreiben, um dieses automatische serverseitige Rendering zu erreichen? Gibt es eine Möglichkeit, das serverseitige Rendering direkt in Django bereitzustellen (über einige Tools, die die endgültigen Ergebnisse der Seite, wie sie auf der Client-Seite angezeigt werden, lesen und interpretieren und dieses rohe HTML zurückgeben?)
Sie haben Ihr Problem wahrscheinlich schon gelöst, aber ich wollte meine Lösung dafür teilen.
Ich habe ein sehr ähnliches Setup und habe etwas, das bisher ziemlich gut funktioniert. Ich habe im Grunde eine Django w / DRF Backend API und isomorphe React / Flux Javascript App. Ich betreibe auch einen Node-Server neben dem Python-Backend-Server, der nur als 'Template-Rendering-Dienst' fungiert. Ersetzen Sie im Wesentlichen die Funktion django render
.
Also ersetze ich einfach den django View
durch einen speziellen IsoView
, der über http zum Knotenserver abruft und den gerenderten HTML-Code zurückgibt.
Und benutze es so:
%Vor%Dies setzt auch eine Django-Vorlage voraus, die so etwas verwendet
%Vor% Damit wird der HTML-Code zurückgegeben, der vom Knoten im body-Tag zurückgegeben wird. Außerdem werden die JSON-Daten, die zum Starten der App auf dem Client im Objekt window.data
benötigt werden, ausgegeben.
Dies ist eine wirklich vereinfachte Version des Systems, aber es sollte funktionieren. Sie sollten vorsichtig mit XSS-Angriffen auf das window.data
-Bit sein, also stellen Sie sicher, dass Sie alle Ihre json-Daten umgehen, aber ansonsten sollten Sie alle gut sein.
Dann sieht der Knotenvorlagen-Server sehr ähnlich zu den Online-Lernprogrammen aus, die Sie für die serverseitige Reaktion finden können. Nur eine einfache Express-App.
Alternativ müssen Sie sich auch nicht mit Django-Vorlagen herumschlagen, wenn Sie den vollständigen ... im Knoten rendern und diesen als String zurückgeben.
Ich hoffe, das hilft.
Tags und Links python django reactjs single-page-application serverside-javascript