最后的最后

总结

恭喜你完成了我们的HotDog教程!

希望这并非我们旅程的终点,而是一个崭新的开始。

接下来

我们强烈建议你继续学习核心主题,以熟悉Dioxus的重要细节。

核心内容部分将引导你了解Dioxus中的关键概念:

  • 使用RSX 构建UI 将教你如何在Dioxus应用中使用 rsx 定义HTML
  • 组件生命周期将教你了解组件的生命周期,以及在组件首次创建、挂载和移除时需要使用的钩子。
  • 管理状态将引导你了解Dioxus中的状态机制。它将教你如何使用 use_signal 创建状态、使用 use_memo 派生状态,以及使用 use_resource 将状态与异步任务集成。在此过程中,你将学习如何利用反应性来声明式地描述你的 UI。
  • Breaking Out将教你如何突破 Dioxus 的渲染模型,使用 web-sys 直接运行 JavaScript 或与 DOM 互动。

新功能创意

挑战自己,为HotDog添加新功能。

  • 使用CSSdioxus-motion为应用添加动画效果。
  • 使用TailwindCSS等库为应用设计样式。
  • 添加输入框,允许用户上传自己的狗狗照片。
  • 让它变得社交化!添加登录功能、用户账户和动态信息流。
  • 重新设计HotDog,打造全新的应用。

常见问题解答

你可能对Dioxus中某些功能的运作方式感到好奇。让我们尝试解答几个常见问题:

Dioxus速度快吗?

Dioxus 非常快速。Dioxus 基于一个极具性能的 VirtualDom 构建。尽管 VirtualDom 听起来像是"纯粹的开销",但 Dioxus 通过编译时优化使其比几乎所有 UI 框架都更快。

在网页端,DioxusSolidSvelte 等框架处于同一水平,这些框架利用了新的反应模型或自定义编译器。

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 已经更加成熟,但仍有一些工作需要完成。

相关推荐
bruce541101 天前
深入理解 Rust Axum:两种依赖注入模式的实践与对比(二)
rust
章丸丸1 天前
Tube - tRPC setup
react native·全栈
该用户已不存在2 天前
这几款Rust工具,开发体验直线上升
前端·后端·rust
JefferyXZF3 天前
Next.js Server Actions 详解: 无缝衔接前后端的革命性技术(八)
前端·全栈·next.js
CF14年老兵4 天前
🤯 AI写代码比人类便宜99.9%!但这就是真相吗?
openai·全栈·trae
m0_480502644 天前
Rust 入门 生命周期-next2 (十九)
开发语言·后端·rust
滕本尊4 天前
从业务到框架:Elpis 企业级应用的 NPM 包抽离实践
前端·全栈
EndingCoder4 天前
测试 Next.js 应用:工具与策略
开发语言·前端·javascript·log4j·测试·全栈·next.js
寻月隐君4 天前
Rust Web 开发实战:使用 SQLx 连接 PostgreSQL 数据库
后端·rust·github