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


  • Github 存储库:https://github.com/tauri-apps/tauri

  • 网址:https://tauri.studio


那么,什么是 Tauri?

Tauri 使您能够使用每个操作系统提供的 Webview 技术堆栈来制作应用程序。它使您能够使用 JS api 调用应用程序后端,从而使您可以选择访问文件系统等内容。所有这些都是在不需要发送 localhost 服务器的情况下完成的,同时为您的应用程序维护一个安全的上下文。

Tauri 应用程序可以有自定义菜单和托盘类型的界面。它们可以安全地更新,并按预期由用户的操作系统管理。它们的最终二进制文件非常小,因为它们不仅使用系统的 webview,而且它们也不需要发布运行时(如 Node.js),因为最终的二进制文件是从 Rust 编译的。这使得 Tauri 应用程序变得非常小巧和高性能,也将 Tauri 应用程序的逆向变成了一项既不琐碎也不有趣的任务。

如果您想了解更多信息,我们建议您查看我们网站](https://tauri.studio/en/docs/about/intro)上的[介绍或深入了解建筑设计文档。


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

我们终于对它的形状和方法感到满意,我们将它的状态标记为 Beta。这意味着在接下来的几个月中,将会发生一些事情:

  1. 我们将确保它能够在我们想要支持的所有平台上正确构建。这包括主要的台式机和主要的移动操作系统。

  2. 我们将聘请第三方安全顾问进行横向安全审计,以确保核心库可以安全使用。

  3. 我们将修复出现的错误并尽可能减少最终捆绑包的大小。

有什么新功能?

太多的事情发生了变化,我们无法在此处列出完整列表。相反,我们只会总结最大的变化。如果您想了解详细信息,请访问我们的发行说明。

但是,如果您早在 Alpha 时代就已经开始了 Tauri 项目,请查看此迁移页面以了解您必须做什么才能重新回到马鞍上。

WRY(Webview 渲染库)

Tauri Alpha 使用绑定到webview/webview,一个 C++ 库。虽然这些都完成了工作,但它们在 Windows 上存在相当多的问题,并且缺少很多我们想要的功能。我们已经用 WRY 替换了这些,这是我们为 Tauri 开发的一个新的纯 Rust Webview 库。 WRY 已被证明在 Windows 上更加稳定,并为所有平台添加了以下功能:

  • 自定义窗口样式:无框、透明、不可见、始终在顶部

  • 高度和宽度限制

  • 可拖动区域

  • 编程设置:大小和大小约束、窗口样式、最小化/最大化、标题

  • 自定义应用程序菜单

  • 系统托盘支持

WRY 存在的第一部分依赖于winit,这是许多操作系统的惊人窗口提供程序。然而,随着时间的推移,我们还需要一些高级功能,例如菜单栏和系统托盘,它们与与他们的愿景相矛盾,因此我们做出了艰难的决定,分叉winit并以不同的名称重新发布它:TAO。

这意味着 TAuri 组织控制所有一阶依赖项。

锈 CLI

我们已经将几乎所有命令都移到了一个用 Rust 编写的新 CLI。这意味着开发 Tauri 应用程序不再需要 Node.js,尽管目前推荐使用 Node.js(除非您在使用 node.js 和为 imagemin 编译某些库时遇到问题)。我们很快就会把最后的命令移过来,让 JS CLI 成为过去。想要在我们仍处于测试阶段时对其进行测试?

% cargo install tauri-cli --version ^1.0.0-beta
% cargo tauri --version
cargo-tauri 1.0.0-beta.0

进入全屏模式 退出全屏模式

cargo run支持

现在可以使用cargo run而不是通过 Tauri CLI 运行 Tauri 应用程序。这可以通过一个新的内部代码生成箱来实现,该箱可以从您的 Tauri 配置文件中生成所需的一切。这仍然需要您拥有有效的tauri.conf.json以及distDir中已经生成的任何资产。目前,codegen 将不会从配置中运行您的beforeBuildCommandbeforeDevCommand

新的 Web 内容加载器

我们已经删除了无服务器和嵌入式服务器模式,并用新的自定义协议加载器替换它们。这结合了无服务器模式的安全性和嵌入式服务器的稳定性,并且比两者都具有更高的性能。

多窗口

它终于来了!感谢 WRY 改进的界面,我们已经能够向 Tauri 添加最需要的功能之一。您现在可以创建多个窗口,无论是在启动时通过tauri.conf.json还是通过 Rust 以编程方式。我们在新的Splashscreen Guide中使用了这一点,它允许您的应用程序的 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");
}

进入全屏模式 退出全屏模式

// Calling your commands is super easy as well
import { invoke } from '@tauri-apps/api/tauri'
invoke('my_custom_command')

进入全屏模式 退出全屏模式

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

更新器

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

外部审计

我们正在与Doyensec合作,对 Tauri, Tao & Wry 的关键组成部分进行全面的横向审计。 Doyensec 在分析 Electron 应用程序方面有着悠久的历史,因此他们非常有资格调查与桌面应用程序相关的问题。一旦审计完成并且我们解决了审计员提出的任何和所有问题,我们将跨过稳定生态系统的门槛,随后将发布 1.0 版本。如果您计划在生产中使用 Tauri,请考虑向我们的Open Collective筹款活动捐款,以支持这项昂贵的工作。

开始使用 Tauri

如果您想开始使用 Tauri 制作应用程序,请查看我们的入门指南。几分钟之内,您的第一个 Tauri 应用程序就会启动并运行。

[生成](https://res.cloudinary.com/practicaldev/image/fetch/s--hvKVssCB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/4i4ern24qx4wldcmm37t.png)

Tauri 没有什么

  • Tauri 不使用基于 Internet Explorer 的 Web 视图,因此您的应用程序中没有提供过时的 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(或者如果您有任何疑问),我们希望您通过https://discord.gg/tauri加入我们的 Discord 服务器。让我们知道您想做出贡献,我们会为您找到一项好任务并指导您。

您也可以通过向我们的Open Collective 捐赠来帮助我们,但是如果您的公司真的通过 Tauri 获利,您应该真正考虑成为白金赞助商的好处。说到赞助......你赞助了多少开源项目?我们听说 Babel 需要支持。


标题图:Alve Larsson

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐