跳转到内容
Tauri

启动画面

在本实验中,我们将在 Tauri 应用中实现一个基本的启动画面功能。 实现方法非常简单,启动画面实际上就是在启动应用前执行一些繁重的设置任务时 创建一个新窗口来显示一些内容,然后在设置完成后关闭它。

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

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

  3. Before you begin you’ll need to have some content to show. How you develop new pages depend on your chosen framework, most have the concept of a “router” that handles page navigation which should work just like normal in Tauri, in which case you just create a new splashscreen page. Or as we’re going to be doing here, create a new splashscreen.html file to host the contents. 开始之前,你需要准备一些用于展示的内容。如何开发新页面取决于你选择的框架,大多数框架都包含“路由器”的概念, 用于处理页面导航,其工作原理与 Tauri 中的常规操作相同。在这种情况下,你只需创建一个新的启动画面页面即可。 或者,就像我们这里要做的那样,创建一个新的 splashscreen.html 文件来托管内容。

    What’s important here is that you can navigate to a /splashscreen URL and be shown the contents you want for your splashscreen. Try running the app again after this step! 这里重要的是,你可以导航到 /splashscreen 并显示你想要的启动画面内容。完成此步骤后,请尝试再次运行该应用程序!

  4. 由于启动画面通常用于隐藏繁重的设置相关任务,因此让我们假装给应用程序一些繁重的任务去做,一些在前端,一些在后端。

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

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

    不要在异步函数中使用 std::thread::sleep ,它们在并发环境中协同运行而不是并行运行,这意味着如果你让线程而不是 Tokio 任务休眠,你将锁定计划在该线程上运行的所有任务,从而导致你的应用程序冻结。

  5. 你现在应该会看到一个启动画面窗口弹出,前端和后端将各自执行耗时 3 秒的初始化任务,完成后启动画面会消失,并显示主窗口!

一般来说,使用启动画面其实意味着你承认自己的应用无法在足够短的时间内完成加载,以至于不得不依赖它。 事实上,更好的做法通常是直接打开主窗口,然后在界面的某个角落显示一个小的加载指示器(比如旋转的进度条),让用户知道后台仍在进行一些初始化任务。

然而,话说回来,使用启动画面也可以是一种风格上的选择,或者你可能有一些特殊需求,必须等待某些任务完成后才能启动应用。 在这种情况下,使用启动画面当然没有,只是通常来说它并不是必需的,而且可能会让用户觉得这个应用优化得不够好。


© 2025 Tauri Contributors. CC-BY / MIT