用 Rust 写一套界面代码,就能同时跑成网页、桌面软件和手机 App,这是开源框架 Dioxus 的核心能力。Dioxus 是一个基于 Rust 语言的全栈界面框架,GitHub 上已积累 39.1k star。它的目标用户是 Rust 开发者,以及不想为网页、桌面、移动端分别维护多套代码的团队:写完一套界面,就能发布到 Web、Windows/macOS/Linux 桌面和 iOS/Android 手机端,前后端逻辑还都用同一种语言写。
一套代码,三个平台
Dioxus 把「一套代码多处运行」做成默认能力:同一份组件代码,可以渲染成网页(通过 WebAssembly 在浏览器里运行,也支持服务端渲染)、桌面窗口(用系统自带 Webview 或实验性的 WGPU 原生渲染)和手机应用(iOS/Android,可直接调用 Java 与 Objective-C 原生接口)。官方工程还支持嵌入式 Linux 等场景。
对开发者最直接的意义是省事:以往要做三端应用,通常得维护 Web 前端、桌面壳、移动端三套工程;用 Dioxus 则一份 Rust 代码统一出三端产物,桌面端打包出的二进制体积小于 3MB(Web 端 hello world 约 50KB,和 React 相当)。
界面怎么写:类 React 组件加信号式状态管理
Dioxus 的界面写法借鉴了前端生态的成熟经验,官方称其结合了 React、Solid、Svelte 的优点。界面由「组件」拼装而成——组件就是界面里可复用的模块,比如按钮、列表、表单。初次接触 React 的开发者看到 Dioxus 的组件与属性语法会感到熟悉,但底层没有 JavaScript,全是 Rust 代码。
状态管理采用「信号」(signals)机制:数据变化时,界面中依赖这份数据的地方自动更新,不需要手动操作 DOM(浏览器页面结构)。这个机制解决的是「数据变了界面没跟着变」这类常见问题,代码更简洁,也不容易出错。
后端能力:Server Functions 让全栈只用一种语言
Dioxus 不只是界面库,它还内置了后端能力,构成完整全栈框架。核心是 Server Functions:前端代码里直接声明一个函数,它就能在后端服务器上执行,框架自动处理网络传输。也就是说,写登录、数据查询这类需要服务端逻辑的功能时,不需要另起一套后端语言。
内置的全栈能力包括 WebSocket(双向实时通信)、SSE(服务端向浏览器单向推送)、流式文件上传下载、表单处理、中间件(在请求进入业务逻辑前后插入的处理环节)以及服务端渲染。想更自由也可以对接 Rust 生态里成熟的 axum 后端框架。
开发体验:热重载与一条命令打包
Dioxus 团队在开发体验上投入较多。命令行工具 dx 提供 serve 命令:启动后改代码,界面毫秒级刷新,这就是「热重载」——改完立刻看到效果,不用手动重启程序;实验性的 --hotpatch 参数甚至能直接热更新 Rust 代码本身。打包用 dx bundle 一条命令完成,自动产出 Web、macOS、Linux、Windows 各平台产物。
官方文档用 Dioxus 自身构建并持续做集成测试,保证文档示例与代码同步,减少了「文档过时」这类开源项目常见问题。
规模与生态:39.1k star、440 位贡献者、4.3K 依赖方
截至素材抓取时点,Dioxus 在 GitHub 上有 39.1k star、1.9k fork,累计 7,196 次提交,440 位贡献者,4,300 多个仓库依赖它,语言构成中 Rust 占 93.8%。最新版本 v0.7.10 于 2026 年 7 月 30 日发布,仓库已有 42 个正式版本。项目由全职核心团队维护,受 FutureWei、Satellite.im 与 GitHub Accelerator 计划资助。
什么时候值得用它
有 Rust 技术栈、又要做多端应用的团队,Dioxus 是目前 Rust 生态里最完整的全栈方案之一:一套代码出三端产物、前后端同一语言、包体积小、开发热重载体验好。如果你正在用 Rust 并且需要界面,或者想在下一项目里用 Rust 同时覆盖网页与客户端,Dioxus 值得列入评估清单——它解决的核心问题很明确:用一门语言、一套代码,把应用铺满主流平台。