Expand description
文章详情页面模块。
对应路由 /post/:slug(SsrMode::Async:<Title>/<Meta> 与 404 状态码依赖文章数据)。
数据获取:LazyRoute::data 在主包里同步创建 Resource,调用
get_public_post_by_slug server function,根据 URL 中的 slug 获取单篇文章详情
(含正文 HTML、目录、封面及上下篇导航);视图代码在 --split 构建下拆进独立
WASM 分包,与数据并发加载。
§反应式取数的关键
Leptos 路由在参数变化时复用本路由视图(上/下一篇导航即同一路由间的 slug 变化),
因此资源必须以 use_params_map 派生的 Memo<String> 为 source:slug 变化即重新
请求,memo 的相等比较过滤无关的路由通知。
§按文章重建子树
PostContent、PostToc、CommentSection 的函数体只运行一次(增强脚本初始化、
scroll-spy 绑定、评论资源都在挂载时建立),必须随文章重建。整篇文章视图由 Suspend
在资源每次解析后重新产出,子组件天然随 slug 重建,无需额外 key。
Structs§
- Post
Detail 🔒Props - Props for the
PostDetailcomponent. - Post
Route - 文章详情路由,对应
/post/:slug。
Functions§
- Post
Detail 🔒 - 文章详情主体:文章头部、封面、正文、页脚、评论区与目录。
- __
Post 🔒Route_ View - fetch_
post 🔒 - 取数函数随分包加载,见
hooks::ssr_resource。 - hydration_
form 🔒 - 水合数据里的文章:正文与目录已在 SSR HTML 里(
inner_html水合不改写 DOM), 正文只留可运行块骨架,目录换成占位;其余字段照旧。长文的水合数据因此不再重复一遍正文。