在软件开发领域,跨平台应用的需求日益增长,而传统的跨平台框架往往意味着性能折衷或开发体验不佳。

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 安全性与跨平台能力结合的开发团队。

更多资料获取

如果还想要领取更多更丰富的资料,扫描二维码,回复【优质资料】,即可获取 全方位学习资料包。

在这里插入图片描述
在这里插入图片描述
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐