Expand description
文章内容组件。 文章内容组件
渲染由服务端生成的文章 HTML 内容,并在 WASM 前端初始化交互脚本。
可运行代码块(markdown 围栏 ```lang runnable)在服务端渲染为带
data-runnable / data-lang / data-overrides / data-source 的 <pre>。
本组件在渲染前把 content_html 拆成片段序列:普通 HTML 文本片段 +
crate::components::code_runner::CodeRunner 组件,使可运行块作为
Leptos 视图内的一等元素渲染(而非手动篡改 DOM,避免 hydration 冲突)。
Structs§
- Fragment
Cache 🔒Entry - Post
Content Props - Props for the
PostContentcomponent.
Enums§
- Content
Fragment 🔒 - 内容片段:普通 HTML 文本,或一个可运行代码块。
- Segment 🔒
- 正文按可运行代码块切开后的原文段:
Html是两个可运行块之间的原文(只含空白的段跳过),Runnable是整个<pre data-runnable="true" …>…</pre>。
Constants§
- FRAGMENT_
CACHE_ 🔒CAP - HYDRATION_
PLACEHOLDER - 水合数据里替代已渲染 HTML 的占位:非空白,切片时仍占一个
Html片段;inner_html水合时不改写服务端 DOM,只记下这个值。
Functions§
- Post
Content - 文章内容组件。
- code_
inner_ 🔒html <pre ...><code ...>内容</code></pre>中<code>的内部 HTML;结构不符时为空。- decode_
html_ 🔒entities - 解码本场景出现的 HTML 实体(属性值经 escape_html 转义产生)。
- extract_
attr 🔒 - 从 HTML 片段中提取首个
name="value"属性值,并解码 HTML 实体。 仅在单个<pre>块内查找,足够本场景使用。 - fragment_
cache 🔒 - hydration_
skeleton - 正文的水合骨架:每个
Html段换成HYDRATION_PLACEHOLDER,可运行块原样保留。 骨架切出的片段序列与原文一一对应(种类、顺序、可运行块的字段都相同),水合时PostContent据此建出与 SSR 相同的组件树,而正文不必再随水合数据下发一遍。 - segments 🔒
- 仅识别带
data-runnable="true"的<pre>;缺少</pre>时剩余内容整体作为 Html 段。 - split_
content_ 🔒fragments - 把服务端渲染的文章 HTML 拆成
Html/Runnable片段序列。 - split_
content_ 🔒fragments_ cached - 带内容缓存的片段解析:内容相同(含更新)时复用上次解析结果。