最近,在跨平台开发领域备受关注的框架 Tauri
发布了 2.0 版本,我们一起来看看都有哪些值得关注的更新吧。
Tauri
是一个用于构建轻量级、快速二进制文件的框架,支持所有主流的桌面平台(macOS、Linux、Windows)和移动平台(iOS、Android)。开发者可以将任意前端框架(如 HTML、JavaScript 和 CSS)与 Rust、Swift 和 Kotlin 等语言编写的后台逻辑结合起来,创建用户体验出色的应用程序。
在 Tauri
应用中,前端部分使用我们最熟悉的 Web 前端技术栈,运行在操作系统的 WebView
中,并与主要用 Rust 编写的应用核心进行通信。开发者无需具备 Rust、Swift
或 Kotlin
的编程技能,因为 Tauri
已经提供了丰富的 JavaScript API。
超强 AI 背景移除:在线批量处理,支持 WebGPU 加速,无需登录,可无限次免费使用!
你应该在什么时候使用 Tauri
?
如果你符合以下任何一项需求,那么 Tauri
可能就是你的最佳选择:
希望拥有一个适用于所有平台的单一 UI 代码库? 希望在不同平台(如 Windows、macOS、Linux、Android、iOS
)上尽可能多地接触用户?是一名前端 Web
开发者并希望编写原生应用?是一名 Rust 开发者并希望编写外观漂亮、且可以用 Rust 实现的应用? 拥有一个现有的 Web
开发团队并希望以低前期投资扩展到原生应用市场?拥有一个现有的 Rust 开发团队并希望所有代码都用 Rust 编写?
Tauri
的受欢迎程度
截至写作时,Tauri
在 GitHub 上有约 4878 个 Pull Request
和 3570 个已关闭 Issues
,还有大约 1000 次讨论。我们的 Discord 服务器目前有约 17700 名成员,大家在这里互相支持、提出问题或者讨论 Tauri
相关的开发话题。我们对社区的积极和支持表示由衷的感谢。
我们还维护了一个 Tauri
相关项目、应用、插件和指南的精选列表——awesome-tauri
,如果你想获得灵感,可以查看这里的内容,并添加自己的项目。
https://github.com/tauri-apps/awesome-tauri?tab=readme-ov-file#applications
从 Tauri 1.0
到 2.0
的历程
在 2022 年 6 月,我们发布了 Tauri 1.0
,极大地影响了桌面操作系统市场以及跨平台应用的构建方式。到了 2022 年底,我们发布了 2.0
的初始 alpha
版本以获得初步反馈,并测试移动交互的定义方式。在接下来的两年中,我们不断地公开调整和优化 Tauri
的架构,最终在今年二月发布了 beta
版本,并与外部安全审计公司合作,检查我们的决策和架构变化。
今年八月,我们发布了 2.0
的候选版本,目的是解决重大 bug 并从实际使用中获得更多反馈。最终,在大量修复和文档改进后,我们在今天正式发布了 Tauri 2.0
的稳定版本。
Tauri
的成功得益于众多贡献者,尤其是 Lucas,多年来他持续不断地提供代码更改。此外,还有 Amr、Fabian-Lars、Tony、Chip、Jason、YuWei、icb、Simon、Oliver Lemasle 以及许多其他贡献者。
下面我们来看看 Tauri 2.0
的主要亮点。
移动端支持
Tauri 2.0 引入了对 iOS 和 Android 的原生支持。这一新增功能大大扩展了 Tauri 的应用场景,使开发者可以使用全新的移动端插件系统,将应用逻辑暴露给 Tauri 前端。这意味着开发者不仅可以在桌面平台上享受 Tauri 带来的便利,还可以在移动平台上无缝重用已有的逻辑代码。
更好的入门体验
Tauri 2.0
新推出了 create-tauri-app
项目,让开发者可以快速从零开始构建一个 Tauri
应用,从而节省时间。
# 可用的命令如下:
sh <( curl https://create.tauri.app/sh )
npm create tauri-app@latest
yarn create tauri-app
pnpm create tauri-app
bun create tauri-app
cargo install create-tauri-app --locked
cargo create-tauri-app
热模块替换(HMR
)
Tauri 2.0 扩展了热模块替换功能,使其支持移动设备和仿真器,开发者可以在不需重新构建整个应用的情况下立即预览更改。
高级插件系统
Tauri 2.0 的插件系统完全重构,提供更强的扩展性和灵活性。将许多原有功能转移到官方插件中,使社区更容易上手,同时加速新功能的实现。插件系统支持开发者自行编写或复用用 Swift 或 Kotlin 编写的原生代码,并通过注解直接暴露给 Tauri
前端。以下是一些重要插件示例:
新的权限系统
Tauri 2.0
引入了一个全新的权限系统,取代了之前的允许列表系统。新系统使用权限、范围和能力来创建灵活且易于使用的访问控制系统。这不仅覆盖 Tauri
的核心 API,还支持应用和插件开发者实现自己的访问控制。
[[permission]]
identifier = "my-identifier"
description = "This describes the impact and more."
commands.allow = [
"read_file"
]
[[scope.allow]]
my-scope = "$HOME/*"
[[scope.deny]]
my-scope = "$HOME/secret"
内部通信(IPC)重写
Tauri 2.0 完全重写了内部通信(IPC)层,大大提升了数据传输效率:
原始负载(Raw Payloads):支持大数据传输,使得前端与后端的通信更加高效。 原始请求(Raw Requests):简化了内部消息传递机制,加快了数据处理速度。
// Rust 端发送原始负载
tauri::async_runtime::spawn(async {
let payload = vec![1, 2, 3, 4, 5];
tauri::api::ipc::Broadcast::emit("event_name", payload).await.unwrap();
});
多渠道分发支持
Tauri 2.0 为应用分发提供了多渠道的官方指南和支持,包括:
Apple Appstore Google Play Microsoft Store CrabNebula Cloud Flathub Snapcraft AUR
这种多渠道分发支持,使得开发者可以更轻松地将应用发布到各大平台,扩大用户覆盖面。
迁移工具
如果你从 1.x
版本迁移,可以查看迁移指南。Tauri 2.0 CLI
也提供了 migrate
命令,以自动化大部分迁移过程:
npm install @tauri-apps/cli@next
npm run tauri migrate
https://v2.tauri.app/migration/
最后
Tauri 2.0 带来了全新的跨平台支持、增强的开发者体验、更强大的插件系统以及更安全的权限管理,并进一步提升了内部通信效率。通过这些改进,Tauri 2.0 成为了一个更加灵活、高效的跨平台应用开发框架。无论你是桌面应用开发者,还是移动应用开发者,Tauri 2.0 都为你提供了一个强大的工具,助力你构建高性能的跨平台应用。
如需了解更多信息和详细更新日志,请访问 Tauri 官方博客。
https://v2.tauri.app/blog/tauri-20/