Dioxus
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/dioxus-rust-fullstack-cross-platform-framework。
技能介绍
它解决什么问题
Rust 生态里的界面开发长期处于碎片化状态:写桌面端要挑一套渲染后端,写移动端又得换工具链,Web 端往往只能靠包裹 HTML 或手写 WASM 胶水层。结果是同一款产品要维护三套代码、三份构建脚本、三种调试方式。Dioxus 想解决的是一套 Rust 代码同时跑在 Web、桌面和移动端的问题,同时保留 Rust 的性能与类型安全。
它是怎么工作的
- 统一的渲染抽象:组件用
rsx!宏描述,写法接近 React 的 JSX;框架负责把组件树交给不同后端渲染,包括web-sys、WebView、服务端渲染(SSR)、LiveView,以及实验性的wgpu渲染器。 - CLI 驱动的工作流:
dx serve负责本地预览与热重载,dx bundle输出经过压缩和优化的产物,例如.wasm压缩、.avif图片生成和代码压缩。 - 原生能力直连:移动端通过
--platform android直接跑在模拟器或真机上,并通过 JNI 调用原生 API,不需要中间的胶水层。 - 可嵌入:可以把 Dioxus 嵌入到 Bevy、WGPU 项目中,或运行在嵌入式 Linux 上。
适用边界与注意点
wgpu渲染器仍在实验阶段,适合尝鲜,不建议作为生产环境的依赖。- LiveView 和 SSR 的交互模型与传统 Web 应用不同,前后端状态同步需要重新设计。
rsx!宏在编译期展开,报错信息有时不够直观,需要掌握宏展开的调试方法。- 移动端调试依赖 JNI 调用,遇到原生层问题时要同时排查 Rust 和 Java/Kotlin 两层。
使用场景
- 需要用同一套 Rust 代码同时发布 Web、桌面与 Android 移动端。
- 想在 Bevy 或 WGPU 项目中嵌入 Dioxus 渲染界面与交互逻辑。
- 通过 dx bundle 输出压缩优化后的 .wasm 与 .avif 静态资源。
- 需要直接调用 JNI 在 Android 上使用原生 API 实现系统级交互。
适合人员
- 用 Rust 写桌面工具但不想维护多套渲染后端的客户端工程师。
- 需要一套代码同时出 Web 和移动端的应用架构师。
- 想在 Bevy 或 WGPU 引擎里集成界面的图形开发者。
- 做内部工具并依赖 JNI 调用 Android 原生能力的移动端工程师。