From 9b6b7cd8c88475b77a0c1d09da167b1516003b86 Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Sat, 1 Apr 2023 22:45:33 -0400 Subject: [PATCH] basic ssr --- deno.json | 4 +-- server.tsx | 72 ++++++++++++++++++++++++++++++------------------------ 2 files changed, 42 insertions(+), 34 deletions(-) diff --git a/deno.json b/deno.json index 43e76fc..3abccf6 100644 --- a/deno.json +++ b/deno.json @@ -3,8 +3,8 @@ "deno.window", "DOM" ]}, "imports": { - "react-original": "https://esm.sh/react@18.2.0", - "react": "https://esm.sh/react@18.2.0", + "react-original": "https://esm.sh/preact@10.11.3/compat", + "react": "https://esm.sh/preact@10.11.3/compat", "@eno/app": "./dummy-app.tsx" }, "tasks": diff --git a/server.tsx b/server.tsx index b59bafa..12eae3e 100644 --- a/server.tsx +++ b/server.tsx @@ -1,6 +1,8 @@ import * as ESBuild from 'https://deno.land/x/esbuild@v0.14.45/mod.js'; import * as MIME from "https://deno.land/std@0.180.0/media_types/mod.ts"; import { debounce } from "https://deno.land/std@0.151.0/async/debounce.ts"; +import SSR from "https://esm.sh/preact-render-to-string@6.0.2"; +import React from "react"; const Transpiled = new Map(); const Transpileable =(inFilePath:string):boolean=> @@ -124,38 +126,10 @@ catch(e) { console.log(`deno.json not found`); } -const Index = ` - - - - - - - - -
Loading
- - - -`; +const App = await import("@eno/app"); +const AppComponent = React.createElement(App.default, null); +console.log(`imported app`, App); Deno.serve({ port: 3000 }, async(_req:Request) => { @@ -193,7 +167,7 @@ Deno.serve({ port: 3000 }, async(_req:Request) => { // serve index by default let type = `text/html`; - let body:BodyInit = Index; + let body:BodyInit = ``; const isLib = url.pathname.startsWith(`/${LibPath}/`) @@ -246,6 +220,40 @@ FileListen("${url.pathname}", reloadHandler);`; body = await Deno.readFile(fsPath); } } + else + { + type = `text/html`; + body = ` + + + + + + + +
${SSR(AppComponent)}
+ + +`; + } return new Response(body, {headers:{"content-type":type as string}}); }