Tauri Beta 正式发布 - 更高效、功能更强大的跨平台应用
各位工程师、项目经理和技术专家们,大家好!经过整整两年的努力,今天,我们自豪地宣布 Tauri 1.0 Beta 版正式发布。
- Github 仓库:https://github.com/tauri-apps/tauri
- 网站:https://tauri.studio
那么,金牛座是什么?
Tauri 让您能够使用各个操作系统提供的 Webview 技术栈来开发应用。它允许您使用 JS API 调用应用后端,从而允许您选择访问文件系统等内容。所有这些操作都无需部署本地服务器,同时还能为您的应用维护安全的上下文环境。
Tauri 应用可以拥有自定义菜单和托盘式界面。它们可以安全地更新,并按预期由用户的操作系统管理。它们的最终二进制文件非常小,因为它们不仅使用系统的 Web 视图,而且无需提供运行时(例如 Node.js),因为最终二进制文件是由 Rust 编译的。这使得 Tauri 应用非常小巧且性能卓越,并且使 Tauri 应用的逆向分析变得既轻松又有趣。
如果您想了解更多信息,我们建议您查看我们网站上的简介或深入了解建筑设计文档。
简而言之,Tauri 是一个用于创建更小、更快、更安全的带有 Web 前端的桌面应用的工具包。Tauri 的核心系统采用稳定的 Rust 语言编写,目前主进程也使用 Rust 语言。但是,您无需编写 Rust 代码即可进行交互。尽管如此,我们计划在 1.0 完整版本发布后提供与其他语言的绑定。
我们终于对它的形态和方法感到满意,并将其状态标记为 Beta 版。这意味着在接下来的几个月里,我们将会发生以下几件事:
- 我们将确保它能够在我们想要支持的所有平台上正确构建。这包括主流的桌面系统和主流的移动操作系统。
- 我们将聘请第三方安全咨询公司进行横向安全审计,以确保核心库可以安全使用。
- 我们将修复出现的错误并尽可能减少最终捆绑包的大小。
什么是新的?
由于改动太多,我们无法在此列出全部内容。我们只会总结一些最重要的改动。如果您想了解更详细的细节,请访问我们的发行说明。
但是,如果您在 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
cargo run
支持
现在,您可以cargo run
使用 Tauri CLI 来运行 Tauri 应用程序。这可以通过一个新的内部代码生成包来实现,该包可以从 Tauri 配置文件中生成所需的所有内容。但这仍然需要您拥有一个有效的配置tauri.conf.json
文件以及您distDir
已生成的配置文件中的所有资源。目前,代码生成包无法从您的配置文件中运行beforeBuildCommand
Tauri 应用程序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])
.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 应用程序。
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