Wie kann FastAPI SSR für Vue 3 ausführen?
P粉004287665
2023-08-26 21:31:32
<p>Laut der SSR-Dokumentation von Vue ist es möglich, eine Anwendung mit node.js zu rendern und über einen Express-Server zurückzugeben. Kann FastAPI dasselbe tun? </p>
<p>Oder ist die Verwendung von Jinja2-Vorlagen oder SPA die einzige Lösung? </p>
<h3>Frage: </h3>
<ul>
<li>Kein SPA: Hilft bei SEO</li>
<li>Kein SSG: Es werden zu viele Seiten generiert. Einige müssen dynamisch generiert werden. </li>
<li>Keine Jinja2/Python-Vorlagen: Knotenmodule werden nicht erstellt, gebündelt und bereitgestellt. Alle Module müssen über ein Remote-Paket-CDN bedient werden. </li>
</ul>
<p>Ich habe das Gefühl, dass es vielleicht die Lösung wäre, das Vue 3-Trennzeichen zu ändern und dann das Projekt zu erstellen und die Dateien als Jinja2-Vorlagen bereitzustellen, aber ich bin mir nicht sicher, wie es mit dem Router von Vue funktionieren würde. Ich weiß, dass der Ordner <code>/dist</code> auf der Standardroute bereitgestellt werden kann und dann ein Catch-All verwendet werden kann, mit dem die tatsächlich vorhandenen Dateien angezeigt werden können. </p>
<h3>Mögliche Lösungen</h3>
<pre class="brush:py;toolbar:false;">@app.get("/", Response_class=FileResponse)
def read_index(request: Request):
index = f"{static_folder}/index.html"
gebe FileResponse(index) zurück
@app.get("/{catchall:path}", Response_class=FileResponse)
def read_index(request: Request):
path = request.path_params["catchall"]
Datei = statischer_Ordner + Pfad
wenn os.path.exists(file):
gebe FileResponse(Datei) zurück
index = f"{static_folder}/index.html"
gebe FileResponse(index) zurück
</pre>
<h3>Frage</h3>
<ul>
<li>Wenn es eine Möglichkeit gäbe, SSR mit FastAPI und Vue 3 durchzuführen, welche wäre das? </li>
<li>Wenn es keine direkte Möglichkeit gibt, wie kann man Vues integrierte <code>/dist</code> mit Jinja2-Vorlagen kombinieren, um dynamische Seiten bereitzustellen? </li>
</ul></p>
有多种可用选项,例如 Nuxt.js、Quasar 和 Gridsome,它们通过 FastAPI 和 Vue 3 提供对 SSR 的支持。