#6 issue/ssr-simple #7
@ -3,9 +3,10 @@
 | 
				
			|||||||
        "deno.window", "DOM"
 | 
					        "deno.window", "DOM"
 | 
				
			||||||
    ]},
 | 
					    ]},
 | 
				
			||||||
    "imports": {
 | 
					    "imports": {
 | 
				
			||||||
        "react-original": "https://esm.sh/preact@10.13.2/compat",
 | 
					 | 
				
			||||||
        "react": "https://esm.sh/preact@10.13.2/compat",
 | 
					        "react": "https://esm.sh/preact@10.13.2/compat",
 | 
				
			||||||
        "@eno/app": "./dummy-app.tsx"
 | 
					        
 | 
				
			||||||
 | 
					        "react-original": "https://esm.sh/preact@10.13.2/compat",
 | 
				
			||||||
 | 
					        "@eno/app": "./example/app.tsx"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "tasks":
 | 
					    "tasks":
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +0,0 @@
 | 
				
			|||||||
import React from "react";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default ()=> <div>dummy app</div>
 | 
					 | 
				
			||||||
@ -1,11 +1,19 @@
 | 
				
			|||||||
 | 
					import TWPreTail from "https://esm.sh/@twind/preset-tailwind@1.1.4";
 | 
				
			||||||
 | 
					import TWPreAuto from "https://esm.sh/@twind/preset-autoprefix@1.0.7";
 | 
				
			||||||
import React from "react";
 | 
					import React from "react";
 | 
				
			||||||
import Component from "./deep/component.tsx";
 | 
					import Component from "./deep/component.tsx";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default ()=>{
 | 
					export default ()=>
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
    const [countGet, countSet] = React.useState(1);   
 | 
					    const [countGet, countSet] = React.useState(1);   
 | 
				
			||||||
return <div class="p-4 font-sans">
 | 
					    return <div class="p-4 font-sans">
 | 
				
			||||||
    <h1 class="my-2 font(bold serif) text(2xl)">Title!!</h1>
 | 
					        <h1 class="my-2 font(bold serif) text(2xl)">Title!!</h1>
 | 
				
			||||||
    <h2>subtitle</h2>
 | 
					        <h2>subtitle</h2>
 | 
				
			||||||
    <Component/>
 | 
					        <Component/>
 | 
				
			||||||
</div>;
 | 
					    </div>;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const CSS = {
 | 
				
			||||||
 | 
					    presets: [TWPreTail(), TWPreAuto()],
 | 
				
			||||||
 | 
					    hash:false
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
							
								
								
									
										32
									
								
								server.tsx
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								server.tsx
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
import * as ESBuild from 'https://deno.land/x/esbuild@v0.14.45/mod.js';
 | 
					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 * 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 { debounce } from "https://deno.land/std@0.151.0/async/debounce.ts";
 | 
				
			||||||
import SSR from "https://esm.sh/v113/preact-render-to-string@6.0.2/deno/preact-render-to-string.mjs";
 | 
					import SSR from "https://esm.sh/v113/preact-render-to-string@6.0.2";
 | 
				
			||||||
import React, {createElement as h} from "react";
 | 
					import React, {createElement as h} from "react";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Transpiled = new Map();
 | 
					const Transpiled = new Map();
 | 
				
			||||||
@ -127,7 +127,10 @@ catch(e)
 | 
				
			|||||||
    console.log(`deno.json not found`);
 | 
					    console.log(`deno.json not found`);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const App = await import("@eno/app");
 | 
					import {default as App, CSS} from "@eno/app";
 | 
				
			||||||
 | 
					import * as Twind from "https://esm.sh/@twind/core@1.1.3";
 | 
				
			||||||
 | 
					const TwindInst = Twind.install(CSS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Deno.serve({ port: 3000 }, async(_req:Request) =>
 | 
					Deno.serve({ port: 3000 }, async(_req:Request) =>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -220,34 +223,25 @@ FileListen("${url.pathname}", reloadHandler);`;
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            const results = Twind.extract(SSR(<App/>), TwindInst);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            type = `text/html`;
 | 
					            type = `text/html`;
 | 
				
			||||||
            body = `<!doctype html>
 | 
					            body = `<!doctype html>
 | 
				
			||||||
<html>
 | 
					<html>
 | 
				
			||||||
    <head>
 | 
					    <head>
 | 
				
			||||||
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
					        <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
 | 
					        <style data-twind>${results.css}</style>
 | 
				
			||||||
        <script type="importmap">${JSON.stringify(ImportObject)}</script>
 | 
					        <script type="importmap">${JSON.stringify(ImportObject)}</script>
 | 
				
			||||||
        <script async src="https://ga.jspm.io/npm:es-module-shims@1.5.1/dist/es-module-shims.js" crossorigin="anonymous"></script>
 | 
					        <script async src="https://ga.jspm.io/npm:es-module-shims@1.5.1/dist/es-module-shims.js" crossorigin="anonymous"></script>
 | 
				
			||||||
    </head>
 | 
					    </head>
 | 
				
			||||||
    <body>
 | 
					    <body>
 | 
				
			||||||
        <div id="app">${SSR(<App.default/>)}</div>
 | 
					        <div id="app">${results.html}</div>
 | 
				
			||||||
        <script type="module">
 | 
					        <script type="module">
 | 
				
			||||||
            import * as TW   from "https://esm.sh/@twind/core@1.0.1";
 | 
					 | 
				
			||||||
            import TWPreTail from "https://esm.sh/@twind/preset-tailwind@1.0.1";
 | 
					 | 
				
			||||||
            import TWPreAuto from "https://esm.sh/@twind/preset-autoprefix@1.0.1";
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            const Configure = {presets: [TWPreTail(), TWPreAuto()]};
 | 
					 | 
				
			||||||
            const ShadowDOM = document.querySelector("#app").attachShadow({mode: "open"});
 | 
					 | 
				
			||||||
            const ShadowDiv = document.createElement("div");
 | 
					 | 
				
			||||||
            const ShadowCSS = document.createElement("style");
 | 
					 | 
				
			||||||
            ShadowDOM.append(ShadowCSS);
 | 
					 | 
				
			||||||
            ShadowDOM.append(ShadowDiv);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            TW.observe(TW.twind(Configure, TW.cssom(ShadowCSS)), ShadowDiv);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            import App from "@eno/app";
 | 
					 | 
				
			||||||
            import {render, createElement as H} from "react";
 | 
					            import {render, createElement as H} from "react";
 | 
				
			||||||
            render(H(()=>H(App)), ShadowDiv);
 | 
					            import * as Twind from "https://esm.sh/@twind/core@1.1.3";
 | 
				
			||||||
 | 
					            import {default as App, CSS} from "@eno/app";
 | 
				
			||||||
 | 
					            Twind.install(CSS);
 | 
				
			||||||
 | 
					            render(H(()=>H(App)), document.querySelector("#app"));
 | 
				
			||||||
        </script>
 | 
					        </script>
 | 
				
			||||||
    </body>
 | 
					    </body>
 | 
				
			||||||
</html>`;
 | 
					</html>`;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user