总结
恭喜你完成了我们的HotDog教程!
希望这并非我们旅程的终点,而是一个崭新的开始。
接下来
我们强烈建议你继续学习核心主题,以熟悉Dioxus的重要细节。
核心内容部分将引导你了解Dioxus中的关键概念:
- 使用
RSX
构建UI 将教你如何在Dioxus
应用中使用rsx
定义HTML
。 - 组件生命周期将教你了解组件的生命周期,以及在组件首次创建、挂载和移除时需要使用的钩子。
- 管理状态将引导你了解
Dioxus
中的状态机制。它将教你如何使用use_signal
创建状态、使用use_memo
派生状态,以及使用use_resource
将状态与异步任务集成。在此过程中,你将学习如何利用反应性来声明式地描述你的 UI。 - Breaking Out将教你如何突破
Dioxus
的渲染模型,使用web-sys
直接运行JavaScript
或与DOM
互动。
新功能创意
挑战自己,为HotDog
添加新功能。
- 使用
CSS
或dioxus-motion
为应用添加动画效果。 - 使用
TailwindCSS
等库为应用设计样式。 - 添加输入框,允许用户上传自己的狗狗照片。
- 让它变得社交化!添加登录功能、用户账户和动态信息流。
- 重新设计HotDog,打造全新的应用。
常见问题解答
你可能对Dioxus
中某些功能的运作方式感到好奇。让我们尝试解答几个常见问题:
Dioxus速度快吗?
Dioxus 非常快速。Dioxus 基于一个极具性能的 VirtualDom
构建。尽管 VirtualDom 听起来像是"纯粹的开销",但 Dioxus
通过编译时优化使其比几乎所有 UI 框架都更快。
在网页端,Dioxus
与 Solid
和 Svelte
等框架处于同一水平,这些框架利用了新的反应模型或自定义编译器。
Rust 是否太难了?
Rust 是一种以学习难度著称的编程语言,但它极其强大。Dioxus 专门设计为使用 Rust 的"简单"部分。例如,Dioxus 主要使用单线程代码,并避免使用复杂的泛型接口。
总体而言,通过"一次构建,随处部署"所获得的生产力通常可以弥补更陡峭的学习曲线。此外,随着 Dioxus 的成熟,接口将变得更易于使用,生态系统也将得到改善。
Dioxus 是否支持"xyz"?
- TailwindCSS:是的,但需要额外步骤,请参阅文档以获取更多信息。
- 原生小部件:是的,但可能需要自行编写代码。Rust 生态系统尚处于早期阶段。
- Shadcn-ui: 尚未支持,目前正在将 radix-ui 移植到 Dioxus,但尚未完成。
- Actix/Rocket:是的,但不完全。在 Dioxus 中,服务器函数基于 axum 构建,但你可以使用任何框架进行服务器端渲染。
- 静态网站生成:是的!文档目前正在建设中,敬请期待。 🏗️
- 动画: 是的,你可以使用 CSS 动画、dioxus-motion,或与系统动画 API 集成。
- 无障碍支持:是的。使用语义化 HTML 和 aria 标签以获得良好的屏幕阅读器支持。
- WGPU:是的,某种程度上。你可以将 Dioxus 叠加到 WGPU 场景上,或尝试使用 Dioxus-Native,它使用 WGPU 进行渲染。
- AI:是的,你可以与 OpenAI 等提供商接口,甚至可以构建自己的提供商。
如果您有未在此列出的常见问题,请提出修改建议!
为什么选择 RSX 而不是 HTML?
如果您见过 React 的 JSX 或 Rust 的 html!{}
宏,您可能会好奇 Dioxus 为什么选择使用自己的语法,而不是更类似于 HTML 的语法。
几个原因:
RSX
无需额外工具即可实现代码高亮和代码折叠- RSX输入速度更快,因为大括号会自动闭合
- 并非所有RSX都是HTML------Dioxus可在非HTML上下文中使用
- HTML并非有效的Rust代码------并非所有HTML都能在
html!{}
中使用
我们希望 Dioxus 的开箱即用体验出色,无需配置任何自定义工具。
Dioxus VSCode 扩展程序可将 HTML 转换为 RSX,CLI 也可通过 dx translate
实现转换。
我应该使用Dioxus、Tauri、Leptos还是Iced?
Rust项目正逐渐形成一个蓬勃发展的生态系统,用于构建应用程序和网站!我们在Readme.md中提供了详细的比较。
Dioxus是一个"一站式"解决方案,用于使用Rust构建应用程序。我们致力于在每个阶段提供帮助:从入门、迭代、测试、打包到部署。
- Tauri:您可以将 Dioxus 与 Tauri 结合使用,但我们主要专注于独立的 Dioxus 体验。如果需要使用 JavaScript 前端或需要对 Webview DOM 进行全面访问,Tauri 是一个不错的选择。
- Leptos:Dioxus 和 Leptos 都是全栈 web 开发的良好选择,但它们在语法和响应模型上存在差异。Dioxus 架构上支持桌面和移动端的"第一类"应用,而 Leptos 主要是一个 web 框架。
- Iced:Iced 是一个使用自有渲染引擎进行渲染的 GUI 框架,因此具有高度可定制性。Iced 适合需要通过 WGPU 访问底层渲染的应用程序。Dioxus 计划于 2025 年初发布自己的 WGPU 渲染器,敬请期待!
Dioxus 是一个规模较大的项目,与拥有更大开发团队或更小范围的其他项目相比,其成熟度提升速度稍慢。在 0.6 版本中,Dioxus 已经更加成熟,但仍有一些工作需要完成。