Rust in Everything
基于 dioxus 0.7.10

在本站中

本站是开源的,仓库在 yuxuetr/rustineverything。这一部分的站点链接都指向提交 89a61b1(2026-10-23),行号以它为准;写作时本站仓库已经到 eefd161,多出的请求体中间件只描述、不链接。那个提交的 Cargo.lock 锁的是 dioxus 0.7.9,和本卷的 0.7.10 只差 CLI,运行时代码相同,不需要升级评估。实验对着本地 dx serve 起的站点(只发 GET)和照本站形状写的 dioxus 0.7.10 小应用。

本站的 axum 路由、tower 中间件、日志、连接、请求体缓冲、sea-orm 查询已经在别的卷里讲过,这里只看 dioxus 自己这一层,其余的链过去。

  1. 本站怎么起服务:dioxus::serve 包住 dioxus::server::router(App),默认配置不流式、没有增量缓存;五层中间件各管哪一段,首屏的 server function 调用不经过它们;body_limit_mw 让带长度的超限请求得到 413,分块请求仍会 panic 成 500;未知路径的 404 正文是整张路由的匹配日志,加一个 catch-all 项和已有的 NotFound 就能换成站点页面。
  2. 本站的页面怎么取数据:76 个 server function、23 处 use_server_future、36 处 use_resource 的分布;用 use_server_future 的页面首屏完整,但水合数据把值发两遍、体积约 2.7 倍,文档页一半是全站目录树;主题、布局、模块开关和论坛列表不进首屏,ModuleGate 只在客户端生效;状态码、eval 与 CSP、脚本转义、错误外泄逐项核对。
flowchart TB
  mainrs["main.rs"] --> serve["dioxus::serve"]
  serve --> router["router(App)"]
  router --> layers["五层中间件"]
  layers --> ssr["SSR 页面"]
  layers --> sfn["server fn"]
  ssr --> usf["use_server_future"]
  ssr --> ures["use_resource"]
  usf --> first["进首屏和水合数据"]
  ures --> later["水合后再取"]

💬 关联讨论

发起讨论
加载中...