全景
这一部分先回答「dioxus 是什么」,再把更新主线和首屏主线各从头到尾走一遍,后面各章都从这里出发。
- dioxus 解决什么问题:「single codebase」落在哪:组件产出与平台无关的
VNode,VirtualDom经WriteMutations交给渲染器,SSR 直接读树;实验看十四个元素的组件首次渲染只有 4 条指令、更新只有 1 条SetText,组件函数却跑了两遍;和 React 同是组件加 hooks,差在编译期模板和 signal;和 Leptos、Sycamore、Yew 只按 dioxus 自己的文档比设计取向。 - 一次点击:更新主线逐步走一遍:根上的委托监听器、
Runtime::handle_event、signal 写入后的标脏、render_immediate和 diff、WebsysDom批量改 DOM、最后的 effect;同一次点击在原生VirtualDom上产生的Mutations。 - 一次页面请求:首屏主线逐步走一遍: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"]
💬 关联讨论
发起讨论加载中...