Github 26.8K star,全栈跨平台应用框架,Dioxus让你告别跨平台开发噩梦!
凭借零配置设置、即时热重载、基于信号的状态管理和卓越的性能,Dioxus 为开发者提供了构建高质量应用的完整工具链。作为一个由全职团队支持且社区活跃的开源项目,Dioxus 正在稳步成长为企业级应用开发的可靠选择,特别适合寻求 Rust 安全性与跨平台能力结合的开发团队。
在软件开发领域,跨平台应用的需求日益增长,而传统的跨平台框架往往意味着性能折衷或开发体验不佳。
Dioxus 应运而生,它是一个基于 Rust 语言的现代化 UI 框架,通过"一次编写,随处运行"的理念解决了这个核心问题。
作为一个零配置、高性能且类 React 的框架,Dioxus 让开发者能够使用单一代码库为 Web、桌面和移动端构建应用,同时保持 Rust 语言的安全性和性能优势。

独特功能
- 仅用三行代码就能构建跨平台应用,涵盖Web、桌面、移动、服务器等多个平台。
- 人体工程学的状态管理融合了React、Solid和Svelte的优点。
- 类型安全的路由和服务器功能,利用Rust强大的编译时保证。
- 集成打包器,可部署到Web、macOS、Linux和Windows。
- 支持即时热重载,使用dx serve命令即可运行应用,实时查看编辑结果。
技术实现
使用单个代码库构建 Web、桌面和移动应用,以及更多。零配置启动、集成的热重载和基于信号的状态管理。使用服务器功能添加后端功能,并使用我们的 CLI 进行捆绑。
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!" }
}
}
使用案例
1、瞬时热重载
使用一个命令 dx serve,您的应用程序即可运行。编辑您的标记和样式,并实时查看结果。
2、用于 Web 和桌面部署的捆绑包
只需运行 dx bundle,您的应用程序将被构建和捆绑,并进行最大化的优化。在 Web 上,利用 .avif 生成,.wasm 压缩,代码缩小,等等。构建的 Web 应用程序大小 不到 50kb,桌面/移动应用程序小于 15mb。
Dioxus 与其他 Rust UI 框架对比
| 框架 | 主要定位 | 核心特点 | 技术实现 | 优势 | 局限性 |
|---|---|---|---|---|---|
| Dioxus | 全平台 UI 框架,支持 Web、桌面、移动和服务器 | • React 风格组件模型 • 基于信号的状态管理 • 零配置设置 • 完整 HTML/CSS 支持 |
• RSX 标记语言 • 使用 Virtual DOM • 支持多种渲染器 • 信号仅用于反应性 |
• 全平台一致体验 • Rust 代码直接运行在用户界面 • 不需要 JS 桥接 • 高度优化的移动架构 |
• 相对年轻的项目 • 某些高级功能仍在开发中 |
| Tauri | 桌面应用框架,前端使用 Web 技术 | • 使用现有 Web 框架作前端 • Rust 作为后端 • 原生系统访问 |
• UI 限制在 JavaScript 或 WebAssembly • 需要 JS 桥接 |
• 可使用熟悉的前端技术 • 生态系统成熟 • 体积小、性能好 |
• 架构复杂 • 需要同时掌握前端和 Rust • 不适合纯 Rust 开发者 |
| Leptos | 全栈 Web 应用框架 | • 类似 SolidJS • 信号驱动反应性 • 服务器组件支持 |
• 使用信号驱动反应性渲染 • 针对 Web 进行优化 • 跨平台 SDK |
• Web 全栈体验优秀 • 专注于 SSR/水合 • 组件和 Web 特定工具 |
• 主要面向 Web • 移动端支持不如 Dioxus • 功能更为特定化 |
| Yew | 单页面 Web 应用框架 | • 单页面应用专用 • 前端工具完善 • 开发者体验好 |
• 绑定到 Web 平台 • 不支持服务器功能 |
• 专为单页面应用优化 • 简单易用 • 自动化工具丰富 |
• 仅限于 Web 平台 • 缺乏跨平台能力 • 功能范围有限 |
| egui | 跨平台即时模式 GUI 库 | • 即时模式 GUI • 适合交互式应用 • 不需样式和布局状态 |
• 使用 RetainedMode • 不依赖浏览器技术 |
• 简单直接 • 性能优秀 • 电池寿命好 |
• 不保留样式和布局 • 修改后重绘整个界面 • 缺乏原生 Web 体验 |
| iced | 跨平台 GUI 库 | • 受 Elm 启发 • 纯 Rust 实现 • 渲染支持 WGPU |
• 基于消息传递和归约器 • Elm 架构状态管理 |
• 纯函数式设计 • 简洁明了 • DOM 节点重用 |
• 状态管理较冗长 • 无原生 Web 功能 • 缺少辅助功能支持 |
| Electron | 跨平台桌面应用框架 | • 成熟的社区 • 完善的工具链 • 广泛的功能支持 |
• 使用 Chromium 内核 • 需要更多系统资源 |
• 成熟稳定 • 大型社区 • 丰富的功能支持 |
• 资源消耗大 • 应用体积大 • 不如 Dioxus 轻量 |
与其他框架相比,Dioxus 提供了全平台支持和优化的架构,使用单一代码库构建应用的能力是其主要优势。
Tauri 适合喜欢 Web 前端技术的开发者,Leptos 专注于 Web 全栈,而 Yew 则针对单页面应用。
egui 和 iced 提供更直接的 GUI 体验但缺乏 Web 技术的兼容性,Electron 则成熟但资源消耗较大。
快速入门
安装
使用 Cargo 安装 Dioxus CLI:
cargo install --git https://github.com/DioxusLabs/dioxus dioxus-cli --locked
创建项目
创建新项目并运行:
# 创建新项目
dx create my_app
# 进入项目目录
cd my_app
# 启动开发服务器
dx serve
运行示例
通过 CLI 运行示例:
# 运行示例
cargo run --example <example>
# 针对特定平台运行
dx serve --example <example> --platform web -- --no-default-features
总结
凭借零配置设置、即时热重载、基于信号的状态管理和卓越的性能,Dioxus 为开发者提供了构建高质量应用的完整工具链。作为一个由全职团队支持且社区活跃的开源项目,Dioxus 正在稳步成长为企业级应用开发的可靠选择,特别适合寻求 Rust 安全性与跨平台能力结合的开发团队。
更多资料获取
如果还想要领取更多更丰富的资料,扫描二维码,回复【优质资料】,即可获取 全方位学习资料包。


点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。
更多推荐
所有评论(0)