写 Rust 有一个尴尬的事:编译好的 CLI 很香,但想做个网页或桌面应用就犯难了。用 Tauri 吧,前端的 JavaScript 生态你得自己搭。用 Yew 吧,样板代码多到劝退。用 Leptos 吧,信号系统是新学的。
Dioxus 是来收拾这个局面的。它的 slogan 很直白:「一套代码,Web、桌面、移动端全跑」。不是概念验证的那种跑,是生产级的。
目前在 GitHub 上 36.3K Stars,Rust 生态里前端框架排第一。Apache-2.0 开源,核心团队全职在维护,有 FutureWei、Satellite.im 这些赞助商。
是什么
Dioxus 是一个 Rust 全栈应用框架,语法模仿 React(jsx! 宏 + 函数组件 + hooks),渲染目标是跨平台的。写出来大致长这样:
fn app() -> Element {
let mut count = use_signal(|| 0);
rsx! {
h1 { "High-Five counter: {count}" }
button { onclick: move |_| count += 1, "Up high!" }
button { onclick: move |_| count -= 1, "Down low!" }
}
}
写过 React 的人看到这个会非常亲切。区别在于:没有虚拟 DOM 的性能开销,编译到 WASM 后 50KB 起步,直接操作真实 DOM。
它不只是另一个 Rust 前端框架——它是一整个"你能想到的平台都支持"的应用框架。
支持的渲染目标:
- Web(WASM)— 编译到 WebAssembly,跑在浏览器里。dev server 自带热重载。
- 桌面(Webview / WGPU / Skia)— macOS、Windows、Linux,一行命令启动。二进制 < 3MB。
- 移动端(Android / iOS)— 直接调用 JNI 和 Objective-C,无需 IPC。dx serve 就能在模拟器上跑。
- SSR + 静态生成— 服务端渲染,hydration,静态站点生成(SSG)都支持。
- 嵌入式 / Bevy— 实验性的 WGPU 渲染器可以在 Bevy 游戏引擎里跑。
核心优势
1. 状态管理是认真的
Dioxus 的信号系统(Signals)结合了 React、Solid 和 Svelte 的设计思路。不像 React 那样每次 setState 重新渲染整个组件树,Dioxus 只更新依赖变化的部分,细粒度到单个 DOM 节点。性能层面不是「优化后能快多少」的问题,是默认就快。
2. 热重载太舒服了
用 dx serve 启动后,改 CSS、改布局直接看到效果。实验性的 dx serve --hotpatch 甚至可以热更新 Rust 逻辑代码,不用重编译。对于 Rust 这种编译型语言来说,这个体验非常奢侈。
3. 全栈能力深度集成
Dioxus 和 axum(Rust 最火的 Web 框架)深度绑定。Server Functions 让你在前端代码里直接写后端逻辑,编译后自动变成 API 端点。WebSocket、SSE、文件上传下载、表单处理全都内置了。写一个全栈 Rust 应用不再需要拼凑三四个库。
4. 原生组件库
官方提供了一套基于 Radix 原语的组件库(类似 shadcn/ui 的定位),开箱即用。不需要自己搭 UI 架子。
5. 打包发布一条龙
dx bundle 一条命令能打包成 Web(含 .avif 压缩、.wasm 压缩、混淆)、桌面安装包、移动 APK/IPA。WASM 版本可以压缩到 50KB 以下。
不是没有槽点
生态还在长。 Dioxus 虽然组件库有了,但第三方插件和教程跟 React/Next.js 没法比。遇到冷门需求大概率要靠自己填坑。
前端开发者门槛。 你要用 Dioxus,得会 Rust。Rust 的学习曲线不会因为框架好就消失。对于「只会 JS 想试试全栈」的人来说,这条路不太友好。
移动端还是实验性。 iOS/Android 支持虽然能用,但是 Webview 渲染的方案在复杂 UI 下表现一般。WGPU 原生渲染器还在开发中,正式版没出来之前,追求原生手感的生产级应用还是谨慎点好。
Native 渲染器(Blitz)在 beta。 基于 WGPU/Skia 的 Blitz 渲染器很有野心(完全不依赖 Webview),但目前还在早期,API 不稳定。
跟同类怎么比
| 框架 | Stars | 渲染目标 | 特点 |
| Dioxus | 36.3K | Web/桌面/移动/SSR | React 风格,信号系统,全栈 |
| Leptos | 18.4K | Web/SSR | 更细粒度的信号,更 Rusty |
| Yew | 30.6K | Web | Elm 风格,生态最老 |
| Tauri | 90.2K | 桌面/移动 | 前端用 JS,Rust 做后端 |
如果你的技术栈已经是 Rust,想用一个框架覆盖 Web + 桌面 + 移动端,Dioxus 是目前最完整的答案。如果是前端团队想切 Rust,Tauri 的过渡会更平滑——前端继续写 React/Vue,Rust 只做系统层。
一句话总结:Dioxus 是 Rust 程序员的全栈瑞士军刀。一套代码三端跑,体验对标 React,性能是原生级别。还不是完美,但从 0.5 到 0.7 的迭代速度看,方向是对的。
GitHub:https://github.com/DioxusLabs/dioxus
官方网站:https://dioxuslabs.com
标签:#Dioxus #Rust全栈 #跨平台框架 #WASM #前端框架 #React #桌面应用 #开源框架 #Rust生态
关注我,每期分享一个帮你省事的强大工具 🛠️