Tauri Beta 正式发布 - 更高效、功能更强大的跨平台应用

2025-05-28

Tauri Beta 正式发布 - 更高效、功能更强大的跨平台应用

各位工程师、项目经理和技术专家们,大家好!经过整整两年的努力,今天,我们自豪地宣布 Tauri 1.0 Beta 版正式发布。



那么,金牛座是什么?

Tauri 让您能够使用各个操作系统提供的 Webview 技术栈来开发应用。它允许您使用 JS API 调用应用后端,从而允许您选择访问文件系统等内容。所有这些操作都无需部署本地服务器,同时还能为您的应用维护安全的上下文环境。

Tauri 应用可以拥有自定义菜单和托盘式界面。它们可以安全地更新,并按预期由用户的操作系统管理。它们的最终二进制文件非常小,因为它们不仅使用系统的 Web 视图,而且无需提供运行时(例如 Node.js),因为最终二进制文件是由 Rust 编译的。这使得 Tauri 应用非常小巧且性能卓越,并且使 Tauri 应用的逆向分析变得既轻松又有趣。

如果您想了解更多信息,我们建议您查看我们网站上的简介或深入了解建筑设计文档


简而言之,Tauri 是一个用于创建更小、更快、更安全的带有 Web 前端的桌面应用的工具包。Tauri 的核心系统采用稳定的 Rust 语言编写,目前主进程也使用 Rust 语言。但是,您无需编写 Rust 代码即可进行交互。尽管如此,我们计划在 1.0 完整版本发布后提供与其他语言的绑定。

我们终于对它的形态和方法感到满意,并将其状态标记为 Beta 版。这意味着在接下来的几个月里,我们将会发生以下几件事:

  1. 我们将确保它能够在我们想要支持的所有平台上正确构建。这包括主流的桌面系统和主流的移动操作系统。
  2. 我们将聘请第三方安全咨询公司进行横向安全审计,以确保核心库可以安全使用。
  3. 我们将修复出现的错误并尽可能减少最终捆绑包的大小。

什么是新的?

由于改动太多,我们无法在此列出全部内容。我们只会总结一些最重要的改动。如果您想了解更详细的细节,请访问我们的发行说明

但是,如果您在 Alpha 阶段就已经启动了 Tauri 项目,请查看此迁移页面,了解您需要做什么才能重新开始。

WRY(Webview渲染库)

Tauri Alpha 版本使用了与 C++ 库webview/webview的绑定。虽然这些绑定能够完成工作,但它们在 Windows 上漏洞百出,并且缺少很多我们想要的功能。我们已将其替换为 WRY,这是一个我们为 Tauri 开发的全新纯 Rust Webview 库。事实证明,WRY 在 Windows 上更加稳定,并且为所有平台添加了以下功能:

  • 自定义窗口样式:无框、透明、隐形、始终在顶部
  • 高度和宽度限制
  • 可拖动区域
  • 程序设置:尺寸和尺寸限制、窗口样式、最小化/最大化、标题
  • 自定义应用程序菜单
  • 系统托盘支持

WRY 诞生之初依赖于winit,这是一款出色的窗口提供程序,适用于许多操作系统。然而,随着时间的推移,我们还需要一些高级功能,例如菜单栏和系统托盘,这它的愿景相冲突,因此我们做出了一个艰难的决定:将其分叉并以另一个名称 TAO 重新发布。winit

这意味着 TAuri 组织控制所有一级依赖关系。

Rust 命令行界面

我们已将几乎所有命令迁移至一个用 Rust 编写的新 CLI。这意味着开发 Tauri 应用不再需要 Node.js,尽管目前我们推荐使用 Node.js(除非您在使用 Node.js 以及编译 imagemin 的某些库时遇到问题)。我们很快会将最终的命令迁移至此,JS CLI 将成为历史。想趁我们还处于 Beta 阶段时测试一下吗?

% cargo install tauri-cli --version ^1.0.0-beta
% cargo tauri --version
cargo-tauri 1.0.0-beta.0
Enter fullscreen mode Exit fullscreen mode

cargo run支持

现在,您可以cargo run使用 Tauri CLI 来运行 Tauri 应用程序。这可以通过一个新的内部代码生成包来实现,该包可以从 Tauri 配置文件中生成所需的所有内容。但这仍然需要您拥有一个有效的配置tauri.conf.json文件以及您distDir已生成的配置文件中的所有资源。目前,代码生成包无法从您的配置文件中运行beforeBuildCommandTauri 应用程序beforeDevCommand

新的 Web 内容加载器

我们移除了无服务器模式和嵌入式服务器模式,并用新的自定义协议加载器取而代之。这结合了无服务器模式的安全性和嵌入式服务器的稳定性,并且性能比两者都更高。

多窗口

它终于来了!得益于 WRY 改进的界面,我们终于能够为 Tauri 添加一项备受期待的功能。现在,您可以创建多个窗口,无论是在启动时通过 Rust 创建,tauri.conf.json还是通过 Rust 以编程方式创建。我们在新的启动画面指南中已经使用了此功能,该指南允许您的应用的 Web 内容在启动画面显示时在后台加载。

改进的命令处理

我们添加了一些宏,使得创建 Rust 命令变得像编写函数一样简单:

// Defining commands is no longer a multi-file mess
#[tauri::command]
fn my_custom_command() {
  println!("I was invoked from JS!");
}

fn main() {
  tauri::Builder::default()
    // No need to write a fancy handler, either
    // Just pass in a list of all your commands
    .invoke_handler(tauri::generate_handler![my_custom_command])![generate](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gpkroh61gxeho4aq1ivk.png)

    .run(tauri::generate_context!())
    .expect("error while running application");
}
Enter fullscreen mode Exit fullscreen mode
// Calling your commands is super easy as well
import { invoke } from '@tauri-apps/api/tauri'
invoke('my_custom_command')
Enter fullscreen mode Exit fullscreen mode

Tauri 的命令功能还支持传递参数、返回值和错误以及运行异步函数。

更新程序

我们新增了一项更新程序功能,让您能够轻松地将更新推送至 Tauri 应用。您可以创建自定义更新通知和进度指示器,或使用内置的更新提示。更新会在发布时签名,并在安装前进行验证,因此用户可以确保他们收到的不是恶意版本的应用。

外部审计

我们正在与Doyensec合作,对 Tauri、Tao 和 Wry 的关键组件进行全面的横向审计。Doyensec 在 Electron 应用分析方面拥有丰富的经验,因此他们完全有资格调查桌面应用相关的问题。一旦审计完成,并解决了审计人员提出的所有问题,我们将迈入稳定的生态系统,1.0 版本也将随之发布。如果您计划在生产环境中使用 Tauri,请考虑向我们的Open Collective筹款活动捐款,以支持这项耗资巨大的工作。

开始使用 Tauri

如果您想开始使用 Tauri 开发应用程序,请查看我们的入门指南。只需几分钟,您就可以启动并运行您的第一个 Tauri 应用程序。

产生

Tauri 没有

  • Tauri 不使用基于 Internet Explorer 的 Webview,因此您的应用中不会包含过时的 Internet Explorer 代码。(说真的,别再散播 FUD 了。)
  • Tauri 默认不提供 Node.js,实际上你甚至不需要在机器上安装 Node.js 来构建 Tauri 应用。(实际上,你可以直接使用 Rust CLI,甚至可以使用像 YEW 这样的基于 WASM 的系统构建整个前端。)
  • Tauri 不会为你的 HTML/CSS/JS 框架运行开发服务器。这些框架数量太多,而且经常变化,因此不值得承担维护负担。

金牛座是谁

Tauri 组织致力于成为一个可持续发展的集体,其原则旨在指导可持续的自由开放软件社区。为此,它目前正在成为Commons Conservancy的一个项目,您可以通过Open Collective进行资金捐助。

下一步是什么?

我们为 Tauri 制定了诸多计划,例如 Arm/Android/iOS 支持、测试框架以及主进程与其他语言的绑定。请参阅我们的路线图,查看完整列表。如果您想帮助 Tauri 添加这些功能(或者您有任何疑问),欢迎加入我们的 Discord 服务器:https://discord.gg/tauri。请告诉我们您想贡献什么,我们会为您找到合适的任务并指导您完成。

您也可以通过向我们的Open Collective捐款来帮助我们。但是,如果您的公司确实使用 Tauri 盈利,那么您应该考虑成为白金赞助商。说到赞助……您赞助了多少个开源项目?我们听说 Babel 需要支持。


标题图形:Alve Larsson

文章来源:https://dev.to/tauri/announcing-tauri-beta-more-efficient-crossplatform-apps-with-better-features-1nbd
PREV
GraphQL 与 REST 对比——结论
NEXT
ts-pattern 如何提高代码的可读性?