Dioxus:一套 Rust 代码,跑遍所有平台

Dioxus 是一个 Rust 编写的跨平台应用框架,拿到了 36,000+ Star。

正文顶部截图

README区域截图

用 Dioxus 写一个计数器,核心代码就这几行:

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!" }
    }
}

这套代码可以跑在 Web、桌面、移动端和服务器上,不需要为每个平台单独维护一套。

支持的平台

Dioxus 目前覆盖了四类运行环境:

  • Web: 编译为 WebAssembly,直接渲染 DOM,支持 SSR 预渲染和客户端水合,打包体积约 50kb
  • 桌面: 通过 Webview 渲染,也实验性支持 WGPU 和 Freya(Skia),macOS、Linux、Windows 三端覆盖,二进制文件不到 3mb
  • 移动端: 支持 Android 和 iOS,可以调用 JNI 和 Objective-C 原生接口,从 dx serve --platform android 到跑在模拟器上只要几秒
  • 服务器: 深度集成 axum,内置 WebSocket、SSE、流式传输、文件上传下载、SSR、表单处理和中间件

几个核心特性

Dioxus 的状态管理结合了 React、Solid 和 Svelte 的设计思路,用 signals 驱动响应式更新。热重载是内置的,改样式和标记语言能在毫秒级生效,实验性的 dx serve --hotpatch 甚至能实时更新 Rust 代码。

打包工具也做得比较完整。跑 dx bundle 就能输出优化后的产物,Web 端支持 avif 图片生成、wasm 压缩和代码混淆,桌面端和移动端产物控制在 5mb 以内。

UI 组件库参考了 shadcn/ui 和 Radix Primitives,提供了一套基础组件可以直接使用。

上手

安装 Dioxus CLI:

curl -fsSL https://dioxuslabs.com/install.sh | bash

或者通过 cargo 安装:

cargo install dioxus-cli --locked

启动开发服务器:

dx serve

Web 平台运行:

dx serve --platform web -- --no-default-features

Dioxus 的文档做得比较全,所有 HTML 元素和事件监听器都附带了 MDN 文档,官网有教程、参考和实战案例可以看。项目社区也比较活跃,有独立的 Discord 频道和 GitHub 组织。

听器都附带了 MDN 文档,官网有教程、参考和实战案例可以看。项目社区也比较活跃,有独立的 Discord 频道和 GitHub 组织。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐