@fluixi/服务器
Fluixi的服务器侧渲染:请求扫描,流线,框架-不可知.
* 概览
通用字符串渲染器位于 @fluixi/dom (单位:千美元)renderToString + 键
请求范围; @fluixi/server 这是 节点家庭 就是这样
货币安全和人类学:
- 注入一个
AsyncLocalStorage输入@fluixi/dom'请求存储器如此并行 SSR 请求是孤立的(@fluixi/dom永远不导入以保持浏览器安全node:async_hooks(b) 与《公约》有关的其他事项; - 重新出口安全部门改革表面(
renderToString, (中文(简体) ),renderToStringAsync, (中文(简体) ),getRequestEvent, (中文(简体) ), 请求文本原始; - 添加请求助手( e)
renderRequest, (中文(简体) ),renderRequestAsync, (中文(简体) ),renderRequestToPage, (中文(简体) ),renderToBodyStream, (中文(简体) ),startServer, (中文(简体) ),createHtmlDocument) (中文(简体) ).
没有元框架组合 : SSR 是您从任何服务器调用的纯函数( Express,
霍诺,一个工人,或者 @fluixi/start) (中文(简体) ).
* 安装
pnpm add @fluixi/server
使用量
import { startServer } from '@fluixi/server';
import App from './app';
const { render, page, renderAsync, stream } = startServer(App);
// express: res.send(page(req.url))
Async 数据( 暂停/ 资源)
renderRequestAsync (和 startServer().renderAsync等待数据加载器
序列化,然后发出一个 window.__FX_DATA__ 脚本 所以客户端种子资源
不牵引 :
import { renderRequestAsync } from '@fluixi/server';
const html = await renderRequestAsync(App, { url });
流线
import { renderToBodyStream } from '@fluixi/server';
// a web ReadableStream of the app body — the host owns the surrounding document
export const renderStream = (url) => renderToBodyStream(App, { url });
请求范围数据+编辑
import { getRequestEvent, setDataRedactor } from '@fluixi/server';
// inside a component / loader:
getRequestEvent()?.request; // the web Request (headers, cookies, …)
// strip server-only fields from __FX_DATA__ before they reach the page:
setDataRedactor((v) => (v?.passwordHash ? { ...v, passwordHash: undefined } : v));