main
html 63 lines 1.97 KB
Raw
1 <!DOCTYPE html>
2 <html style="width: 100%; height: 100%; overflow: hidden">
3 <head>
4 <meta charset="utf-8">
5 <title>Fizz Example</title>
6 </head>
7 <body>
8 <h1>Fizz Example</h1>
9 <div id="container">
10 <p>
11 To install React, follow the instructions on
12 <a href="https://github.com/facebook/react/">GitHub</a>.
13 </p>
14 <p>
15 If you can see this, React is <strong>not</strong> working right.
16 If you checked out the source from GitHub make sure to run <code>npm run build</code>.
17 </p>
18 </div>
19 <script type="module">
20 import React from "https://esm.sh/react@canary?dev";
21 import ReactDOM from "https://esm.sh/react-dom@canary?dev";
22 import ReactDOMServer from "https://esm.sh/react-dom@canary/server.browser?dev";
23
24 window.React = React;
25 window.ReactDOM = ReactDOM;
26 window.ReactDOMServer = ReactDOMServer;
27 </script>
28 <script src="https://unpkg.com/babel-standalone@6/babel.js"></script>
29 <script type="text/babel">
30 async function render() {
31 let controller = new AbortController();
32 let response;
33 try {
34 let stream = await ReactDOMServer.renderToReadableStream(
35 <html>
36 <body>Success</body>
37 </html>,
38 {
39 signal: controller.signal,
40 }
41 );
42 response = new Response(stream, {
43 headers: {'Content-Type': 'text/html'},
44 });
45 } catch (x) {
46 response = new Response('<!doctype><p>Error</p>', {
47 status: 500,
48 headers: {'Content-Type': 'text/html'},
49 });
50 }
51
52 let blob = await response.blob();
53 let url = URL.createObjectURL(blob);
54 let iframe = document.createElement('iframe');
55 iframe.src = url;
56 let container = document.getElementById('container');
57 container.innerHTML = '';
58 container.appendChild(iframe);
59 }
60 render();
61 </script>
62 </body>
63 </html>