Rust in Everything
基于 dioxus 0.7.10

全景

这一部分先回答「dioxus 是什么」,再把更新主线和首屏主线各从头到尾走一遍,后面各章都从这里出发。

  1. dioxus 解决什么问题:「single codebase」落在哪:组件产出与平台无关的 VNode,VirtualDom 经 WriteMutations 交给渲染器,SSR 直接读树;实验看十四个元素的组件首次渲染只有 4 条指令、更新只有 1 条 SetText,组件函数却跑了两遍;和 React 同是组件加 hooks,差在编译期模板和 signal;和 Leptos、Sycamore、Yew 只按 dioxus 自己的文档比设计取向。
  2. 一次点击:更新主线逐步走一遍:根上的委托监听器、Runtime::handle_event、signal 写入后的标脏、render_immediate 和 diff、WebsysDom 批量改 DOM、最后的 effect;同一次点击在原生 VirtualDom 上产生的 Mutations。
  3. 一次页面请求:首屏主线逐步走一遍:axum 的 fallback、每个请求一个 VirtualDom、等 suspense、带水合标记的 HTML 和水合数据、浏览器里的 rebuild 与 rehydrate;curl 拿到的 HTML 逐块标出用途。
flowchart TB
  why["dioxus 解决什么问题"] --> clickev["一次点击"]
  why --> request["一次页面请求"]
  clickev --> core["03 VirtualDom 内核"]
  clickev --> signals["04 响应式"]
  clickev --> web["05 浏览器渲染"]
  request --> fs["06 SSR 与 fullstack"]

💬 关联讨论

发起讨论
加载中...