Frontend-Routing
Frontend-Routing in Ihrer Wails-Anwendung verwenden
Frontend-Routing ist eine verbreitete Methode, um in einer Single-Page-Anwendung zwischen Ansichten zu wechseln. Dieser Leitfaden beschreibt die empfohlenen Ansätze für verschiedene Frontend-Frameworks bei der Verwendung von Wails.
Für das Routing in Vue wird der Hash-Modus empfohlen:
import { createRouter, createWebHashHistory } from "vue-router";
const router = createRouter({
history: createWebHashHistory(),
routes: [
//...
],
});Der Hash-Modus verwendet den URL-Hash, um verschiedene Ansichten darzustellen. Das hashbasierte URL-Format verhindert dabei Probleme durch Eingriffe der Wails-Laufzeit in das Routing.
Für das Routing in Angular wird HashLocationStrategy empfohlen:
RouterModule.forRoot(routes, { useHash: true });Hashbasierte URLs stellen sicher, dass das Routing auf allen Plattformen korrekt mit der Fensterverwaltung von Wails funktioniert.
Für das Routing in React wird HashRouter empfohlen:
import ReactDOM from "react-dom/client";
import { HashRouter, Routes, Route } from "react-router-dom";
ReactDOM.createRoot(root).render(
<HashRouter basename={"/"}>
{/* The rest of your app goes here */}
<Routes>
<Route path="/" element={<Page0 />} />
<Route path="/page1" element={<Page1 />} />
<Route path="/page2" element={<Page2 />} />
{/* more... */}
</Routes>
</HashRouter>
);HashRouter verwendet URL-Hashes anstelle von Pfaden und funktioniert daher mit Wails auf allen Plattformen zuverlässig.
Für das Routing in Svelte wird svelte-spa-router empfohlen:
<script>
import Router from "svelte-spa-router";
</script>
<Router
routes={{
"/": Home,
"/products": wrap({
asyncComponent: () => import("./routes/Products.svelte"),
}),
"/settings": Settings,
"*": NotFound,
}}
/>svelte-spa-router unterstützt hashbasiertes Routing und ist daher mit Wails-Anwendungen kompatibel.
Warum Hash-Routing?
Wails bettet Ihr Frontend in ein natives Webview-Fenster ein. Hashbasiertes Routing (#/page anstelle von /page) vermeidet Konflikte mit:
- dem internen Routing der Wails-Laufzeit
- der nativen Verarbeitung von Fenster-URLs auf verschiedenen Plattformen
- Produktions-Assets, die unter anderen URL-Pfaden als dem Root-Pfad bereitgestellt werden
Fehlerbehebung
Wenn bei Produktions-Builds Probleme mit dem Frontend-Routing auftreten:
- Stellen Sie sicher, dass Ihr Frontend-Build-Tool für die Ausgabe von Routing im Hash-Modus konfiguriert ist
- Fügen Sie bei Vite-basierten Projekten
base: "./"zu Ihrervite.config.jshinzu - Überprüfen Sie, ob Ihr
index.htmlden Fallback für SPA-Routing korrekt verarbeitet