Skip to main content

Module post_content

Module post_content 

Source
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§

FragmentCacheEntry 🔒
PostContentProps
Props for the PostContent component.

Enums§

ContentFragment 🔒
内容片段:普通 HTML 文本,或一个可运行代码块。
Segment 🔒
正文按可运行代码块切开后的原文段:Html 是两个可运行块之间的原文(只含空白的段跳过), Runnable 是整个 <pre data-runnable="true" …>…</pre>。

Constants§

FRAGMENT_CACHE_CAP 🔒
HYDRATION_PLACEHOLDER
水合数据里替代已渲染 HTML 的占位:非空白,切片时仍占一个 Html 片段;inner_html 水合时不改写服务端 DOM,只记下这个值。

Functions§

PostContent
文章内容组件。
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 🔒
带内容缓存的片段解析:内容相同(含更新)时复用上次解析结果。