demo_network_visjs/server.tsx

46 lines
928 B
TypeScript

import { bundle } from 'emit'
import ssr from 'preact-render-to-string'
import denoConfig from './deno.json' with { type: 'json' }
//only for deno compile (https://github.com/denoland/fresh/issues/785)
import * as React from 'preact/compat'
//Compile and bundle client script to js
const script = await bundle('./script.tsx', {
minify: true,
type: 'module',
compilerOptions: {
inlineSourceMap: true,
jsxFactory: 'h',
},
'importMap': { imports: denoConfig.imports },
})
const css = await Deno.readTextFile('./style.css')
/**
* Page template
*/
function Template() {
return (
<html lang='fr'>
<head>
<title>Démo</title>
</head>
<style>{css}</style>
<body>
</body>
<script type='module' dangerouslySetInnerHTML={{ __html: script.code }}>
</script>
</html>
)
}
Deno.serve(() =>
new Response(ssr(<Template />), {
headers: {
'Content-Type': 'text/html; charset=utf-8',
},
})
)