Add support for client side routing and updating without loading the AppShell
29 lines
861 B
TypeScript
29 lines
861 B
TypeScript
import { Elysia } from "elysia";
|
|
import { html } from "@elysiajs/html";
|
|
import { staticPlugin } from "@elysiajs/static";
|
|
|
|
import { AppShell } from "./src/frontend/AppShell";
|
|
import { app } from "./src/backend";
|
|
|
|
const index = new Elysia()
|
|
.use(html())
|
|
.onRequest(({ request }) => {
|
|
console.log(`Request ${request.method} ${request.url}`);
|
|
})
|
|
.onAfterHandle(({ request, responseValue }) => {
|
|
if (request.headers.get("shell-loaded") === "true") {
|
|
return responseValue; // Return the <main> element if the AppShell has already been loaded
|
|
}
|
|
return AppShell(responseValue); // Return the <main> element wrapped by the AppShell
|
|
})
|
|
.use(staticPlugin({
|
|
assets: './src/public',
|
|
prefix: '/public'
|
|
}))
|
|
.use(app)
|
|
.listen(3000);
|
|
|
|
console.log(
|
|
`🦊 Elysia is running at ${index.server?.hostname}:${index.server?.port}`
|
|
);
|