Tauri 2.0 稳定版发布
Tauri 是什么?
Tauri 应用程序的前端使用您喜欢的 Web 前端栈编写。它在操作系统的 WebView 中运行,并与主要用 Rust 编写的应用核心进行通信。
我何时应该使用 Tauri?
如下任一一项符合,你应该使用 Tauri:
- 您是否想要一个适用于所有平台的单一 UI 代码库?
- 您是否想要在用户的平台上尽可能多地触及用户(例如 Windows、MacOS、Linux、Android、iOS)?
- 您是否是一名前端 Web 开发者,想要编写原生应用程序?
- 您是否是一名 Rust 开发者,想要编写具有漂亮 UI 的应用程序,并有选择地使用 Rust 进行编写?
- 您是否有一个现有的 Web 开发团队,并希望以较低的前期投资扩展到原生应用程序市场?
- 您是否有一个现有的 Rust 开发者团队,并希望一切都用 Rust 编写?
Tauri 有多受欢迎?
截至撰写本文时,Tauri 仓库在 GitHub 上有大约 4878 个拉取请求和大约 3570 个问题关闭,并且有大约 1000 个讨论。
我们的 Discord 服务器目前拥有约 17700 名成员。我们看到了大量个人用户支持、Tauri 本身的问题、直接向工作组提出的问题,或者仅仅是 Tauri 应用开发者之间的讨论。
我们对积极和支持性的社区感到非常高兴,并对所有在 Discord 或 GitHub 上回答问题或帮助他人的社区成员表示感谢。
我们在 awesome-tauri 维护了一个精选的 Tauri 相关项目列表,包括应用程序、插件、指南等。如果您想要获得灵感、看看其他人在构建什么,并理想地创建一个 PR 添加您的项目,请查看此列表。
当然,这只是代表性的样本集,我们并不知道还有谁在 Tauri 上构建。
我们是如何达到 2.0 的?
2022 年 6 月,我们发布了 Tauri 1.0,对桌面操作系统市场以及如何构建跨平台应用程序产生了巨大影响。
2022 年底,我们发布了 2.0 的初始 alpha 版本,以获得初步反馈,并测试移动交互应该如何定义。
在初始 alpha 之后,我们花了将近两年的时间公开完善和改变 Tauri 的架构。在我们看到足够清晰的大局后,我们在今年二月发布了 beta 版本。同时,我们与外部安全审计员合作,检查我们的决策、架构变化等等。
今年 8 月,我们发布了 2.0 的候选版本,以消除主要错误并获得更多生产性使用的反馈。同时,外部审计结束并公开。
候选版本的时间框架相对较短,主要包括高影响力的错误修复和文档改进。在候选版本阶段我们不得不进行的一些破坏性更改被捆绑在一起,直到最后并包含在稳定版本中。如果您主要关心的是从以前版本升级,请查看迁移部分。
总的来说,我们花了两年多的时间进行改进、新功能、错误修复、文档重写和许多讨论。
这一切发生的同时,我们还发布了 8 个 Tauri 1.x 分支的小版本,并在几个补丁版本中回溯了安全修复和其他重要的错误修复。
谁使这个版本成为可能?
这个版本和 Tauri 本身之所以成为可能,是因为 Lucas 提供了大量的贡献,多年来他一直在不断地提供代码更改。
显然,Lucas 不是唯一一个为 Tauri 工作和贡献的个人,但我们觉得他应该得到特别的提及,因为他多年来一直在支持项目和社区。
我们在 2.0 中对 Tauri 仓库做出了重大贡献,包括 Amr、Fabian-Lars、Tony、Chip、Jason、YuWei、icb、Simon、Oliver Lemasle 和许多其他贡献者(来源数据)。
我们收到了越来越多的一次性贡献者(一个或非常少的 PR)。我们对此表示感谢,但如果在这里列出每个人的名字,这个列表将会非常长。
我们组织中有很多仓库,它们支持 Tauri 的成功,没有社区和工作组的贡献,Tauri 就不会有今天的成就。对所有参与的人表示感谢!
特别感谢 Fabian-Lars 和 Simon 他们对社区的持续参与。如果您参与过 Tauri 的 Discord 或 GitHub 讨论,您可能知道他们的名字或头像。
如果您在 Google 或 YouTube 上搜索过 Tauri,您可能已经看过 Jacob 的直播。如果没有,请务必查看并订阅,因为他的课程不仅仅是教育性的。
Tauri 董事会在我们心中占有特殊的位置,特别感谢 Daniel Yvetot-Thompson 为使 Tauri 为人所知和可持续所做的无数小时的努力。
我们不应该忘记的一件事是,我们从这个开源项目的一个稳定合作伙伴那里获得了支持。
CrabNebula 为上述提到的许多人以及这里没有提到的人提供了特权,使他们能够在工作时间以及私人时间里为 Tauri 生态系统工作。您可以在我们的博客上找到合作伙伴关系的公告,我们对过去一年里的这种合作感到非常高兴。
仅在 2024 年,他们就在这个项目上花费了超过 2870 个工作小时,这极大地推动了进展,并使我们能够宣布今天的稳定 2.0 版本。
如果您还不了解 CrabNebula,请务必查看他们的产品和服务,并考虑与 Tauri 的共生关系,如果您不仅对改进您的工作流程感兴趣,而且还支持 Tauri 生态系统。
2.0 的亮点是什么?
在这个主要版本中,我们改进和改变了您可以构建、开发和发布 Tauri 应用程序的方式和地点。在以下部分中,我们将提供更详细的见解。这并不包括所有内容,但应该能给您一个关于 Tauri 2.0 的印象。
开始体验
当您开始使用新框架或工具时,您总是要经历最初的入职或开始过程。
我们重视开发者体验(DX),并尝试使这个初始过程尽可能无缝,就像构建和分发您的最终应用程序一样。
为此,我们创建了另一个名为 create-tauri-app
或简称 CTA 的项目。
这个工具允许开发者从零开始,在几分钟内而不是几小时内启动并运行 Tauri 应用程序。
- Bash
- PowerShell
- npm
- Yarn
- pnpm
- bun
- Cargo
sh <(curl https://create.tauri.app/sh)
当然,在开始构建应用程序之前,您需要在开发系统上安装一些先决条件。为此,我们在官方文档中有详细的指南,包含操作系统特定的部分。
这个整个入职体验已经改进,现在还引导了 iOS 和 Android 的移动开发模板。
热模块替换
在初始入职之后,您将定期开发和调试您的 Tauri 应用程序。我们考虑了在 Tauri 1.x 中会改进您的开发过程的内容,并扩展了热模块替换(HMR)到移动设备和模拟器。
这意味着对应用程序前端的所有更改不需要重建整个应用程序,您可以实时预览它在您正在开发的目标设备或操作系统上的外观。
您的浏览器不支持视频标签。
插件
随着 Tauri 2.0 的发布,我们构建了一个更先进的插件系统。我们将许多以前的功能转移到了我们的官方插件中(参见 plugins-workspace),以允许社区更容易地参与 Tauri 的贡献。我们还希望吸引更多的维护者来维护插件,并加快实现新功能的过程。
将功能转移到插件的这一举措还有另一个好处。我们将能够为 Tauri 的核心定义一个完成的定义。我们希望稳定核心功能,并提供一个稳定的框架,其中可变的部分主要是插件,提供对系统特定功能的访问。
您不再需要了解整个 Tauri 就可以改进或实现特定功能。插件通常不依赖其他插件,有一些例外。这意味着要实现新的文件系统访问功能,只需要为 fs
插件做出贡献,而不是 Tauri 本身。
由于这个版本也针对移动平台,插件系统还支持移动插件。您可以编写或重用在 iOS 上的 Swift 或 Android 上的 Kotlin 的原生代码,并直接使用 Annotations
(在 Android 上是 @Command
),在 iOS 上实现 Subclass
(YourPluginClass: Plugin
),或者从基于 Rust 的 Tauri 命令调用 Swift 或 Kotlin 代码。查看文档了解如何编写您自己的插件。
由于我们以 2.0 版本发布 Tauri,官方插件将遵循 Tauri 的主要版本,以使与 Tauri 主要版本的兼容性一目了然。然而,并非所有插件都像 Tauri 本身一样稳定。
每个插件的稳定性是按插件定义的,并在插件文档中记录(很快)。插件 API 可能在次要版本中会中断,但我们将尽量减少这些更改,特别是对于被认为是稳定的插件。
自动启动
在系统启动时自动启动您的应用程序。
条形码扫描器
允许您的移动应用程序使用摄像头扫描 QR 码、EAN-13 和其他类型的条形码。
生物特征
在 Android 和 iOS 上提示用户进行生物特征认证。
剪贴板
读取和写入系统剪贴板。
深度链接
将您的 Tauri 应用程序设置为 URL 的默认处理程序。
对话框
用于打开和保存文件的原生系统对话框,以及消息对话框。
HTTP 客户端
访问用 Rust 编写的 HTTP 客户端。
本地主机
在生产应用程序中使用本地主机服务器。
日志记录
可配置的日志记录。
NFC
在 Android 和 iOS 上读取和写入 NFC 标签。
操作系统信息
读取有关操作系统的信息。
持久作用域
在文件系统上持久化运行时作用域更改。