1 Star 0 Fork 0

Vampire-Jason/react-rsc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
generator.tsx 1.33 KB
一键复制 编辑 原始数据 按行查看 历史
Vampire-Jason 提交于 2024-04-29 13:56 +08:00 . updating
import React from 'react';
import { renderJSXToClientJSX, stringifyJSX } from './utils'
import { Layout, IndexPage, PostPage } from './components'
import { renderToString } from 'react-dom/server';
import { renderToPipeableStream } from "react-server-dom-webpack/server.node"
// export async function htmlGenerator(url) {
// let jsx = <Router url={url} />
// const clientJSX = await renderJSXToClientJSX(jsx);
// let html = await renderToString(clientJSX);
// // 拼接到脚本代码中
// const clientJSXString = JSON.stringify(clientJSX, stringifyJSX);
// html += `<script>window.__INITIAL_CLIENT_JSX_STRING__ = `;
// html += JSON.stringify(clientJSXString).replace(/</g, "\\u003c");
// html += `</script>`;
// html += `
// <script type="importmap">
// {
// "imports": {
// "react": "https://esm.sh/react@18.2.0",
// "react-dom/client": "https://esm.sh/react-dom@18.2.0/client?dev"
// }
// }
// </script>
// <script type="module" src="/client.js"></script>
// `;
// return html;
// }
export function jsxGenerator(url) {
return renderToPipeableStream(<Router url={url} />)
}
function Router({ url }) {
let page;
if (url.pathname === "/") {
page = <IndexPage />;
} else {
const slug = url.pathname.slice(1);
page = <PostPage slug={slug} />;
}
return <Layout>{page}</Layout>;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Vampire-Jason/react-rsc.git
git@gitee.com:Vampire-Jason/react-rsc.git
Vampire-Jason
react-rsc
react-rsc
master

搜索帮助