跳到内容
Tauri

启动画面

在本实验中,我们将为一个 Tauri 应用实现基本的启动屏幕功能。实现过程非常直观:启动屏幕本质上只是创建一个新窗口,在应用执行繁重的设置任务期间显示一些内容,并在设置完成后将其关闭。

  1. 在开始开发任何项目之前,构建并运行初始模板非常重要,这可以验证你的设置是否按预期工作。

  2. 添加新窗口最简单的方法是直接将它们添加到 tauri.conf.json 中。你也可以在启动时动态创建它们,但为了简单起见,我们选择注册它们。请确保你有一个标签为 main 的窗口,它在创建时处于隐藏状态;还有一个标签为 splashscreen 的窗口,在创建时直接显示。你可以将所有其他选项保留为默认值,或者根据偏好进行调整。

  3. 在开始之前,你需要准备一些内容来展示。开发新页面的方式取决于你选择的框架,大多数框架都有处理页面导航的“路由”概念,这在 Tauri 中应该可以像往常一样工作,在这种情况下,你只需创建一个新的启动屏幕页面即可。或者,正如我们此处将要做的那样,创建一个新的 splashscreen.html 文件来托管这些内容。

    这里重要的是,你可以导航到 /splashscreen URL 并显示你想要的启动屏幕内容。在此步骤之后,尝试再次运行该应用程序!

  4. 由于启动屏幕通常旨在隐藏繁重的设置任务,让我们模拟一下让应用做一些繁重的工作,部分在前端,部分在后端。

    为了模拟前端的繁重设置,我们将使用一个简单的 setTimeout 函数。

    在后端模拟繁重操作最简单的方法是使用 Tokio crate,这是 Tauri 在后端使用的 Rust crate,用于提供异步运行时。虽然 Tauri 提供了该运行时,但有些工具函数 Tauri 并没有重新导出,因此我们需要将该 crate 添加到我们的项目中才能访问它们。这在 Rust 生态系统中是一种非常常见的做法。

    不要在异步函数中使用 std::thread::sleep,因为它们在并发环境中是协作式运行的,而不是并行运行的。这意味着如果你休眠了线程而不是 Tokio 任务,你将阻塞所有调度在该线程上运行的任务,导致你的应用冻结。

  5. 现在你应该看到启动屏幕窗口弹出,前端和后端将分别执行各自 3 秒钟的繁重设置任务,之后启动屏幕消失,主窗口显示出来!

通常来说,使用启动屏幕是一种“妥协”的承认,意味着你无法让应用加载得足够快而无需它。事实上,通常更好的做法是直接进入主窗口,然后在某个角落显示一个小转轮,通知用户后台仍在进行设置任务。

话虽如此,这也可以是一种风格选择,或者你可能有某些特殊需求,导致在完成某些任务之前无法启动应用程序。使用启动屏幕绝对不是错误的,它只是通常没那么必要,而且可能会让用户觉得应用优化得不够好。


© 2026 Tauri 贡献者。CC-BY / MIT