导读:Tauri 是一个基于 Rust 语言,用于构建桌面应用程序的框架。本文将详细介绍其功能以及作者认为的优缺点。
我一直很喜欢GUI图形界面,不管是基于桌面的还是基于浏览器的,但是你需要对后者进行五年的学习和实训。这就是我喜欢并且仍然使用 Vaadin 的原因:你无需编写一行 HTML、JavaScript 和 CSS 即可开发 Web UI。
现在,我对这个话题仍然感兴趣;在几年前,我认真分析了JVM 桌面框架的状态。
我本人也非常喜欢 Rust 编程语言,而Tauri 是一个基于 Rust 的用于构建桌面应用程序的框架。
以下是我的个人看法。
概述
使用Tauri 构建优化、安全、独立于前端的应用程序,适用于多平台部署。
Tauri 开发基础
Tauri 应用由两个模块组成:采用标准 Web 网页开发技术(HTML、Javascript 和 CSS)的客户端模块和采用 Rust 的后端模块。Tauri 在专用的 Chrome 浏览器实例中运行 UI。
用户像往常一样与 UI 交互。Tauri 通过特定的 JS 模块(即)在客户端 JavaScript 和后端 Rust 之间提供绑定window.__TAURI__.tauri。
它还提供其它用于与本地系统交互的模块,例如文件系统、操作系统、剪贴板、窗口管理等。
绑定基础字符串。以下,是客户端示例代码:
const { invoke } = window.__TAURI__.tauri;
let greetInputEl;
let greetMsgEl;
greetMsgEl.textContent = await invoke("greet", { name: greetInputEl.value }); //1
调用 Tauri 命令 greet
以下,是相应的 Rust 代码:
#[tauri::command] //1
fn greet(name: &str) -> String { //1
format!("Hello, {}! You've been greeted from Rust!", name)
}
在此,我们定义了一个 Tauri 函数,名为greet。
在下面的部分中,我将列出 Tauri 的优点、不足之处或者缺点。请记住,这是我根据以前的经验得出的主观意见。
优点
入门容易
幸运的是,Tauri入门容易,这种情况其实越来越少见,但是,有些技术还是需要记住,在成为专家之前,我们要一直保持新手心态。任何产品的第一部分都应该是对该技术的快速解释,第二部分是入门。
Tauri 在这方面取得了成功;我按照快速入门指南在几分钟内就搞定了我的第一个 Tauri 应用程序。
技术文档
Tauri 的文档全面、广泛(就我浏览的而言)并且结构良好。
良好的反馈正循环
我曾体验过一些令人兴奋的技术,但反馈循环(即看到更改结果所需的时间)却使该技术变得无法坚持使用。GWT ,我正在关注你。短的反馈正循环有助于带来出色的开发人员体验。
在这方面,Tauri 得分较高。只需一个简单的命令即可启动应用程序:
cargo tauri dev
如果前端发生变化,Tauri 会重新加载它。如果任何元数据发生变化(例如存储中的任何内容),比如tauri.conf.json,Tauri 会重新启动应用程序。唯一的缺点是这两种行为都会丢失 UI 状态。
完整的生命周期管理
Tauri 不仅帮助我们开发应用程序,还提供调试、测试、构建和分发应用程序的工具。
优点
起初,我想创建一个桌面软件:一个文件重命名应用。但是,当我想使用文件浏览器按钮选择系统文件夹时,很快就遇到了问题。首先,Tauri 不允许使用常规的 JavaScript 文件 API;相反地,它提供的能力很有限。更糟糕的是,你需要显式配置构建时可用的文件系统路径,它们还变成枚举的一部分。
我知道安全性是现代软件中日益受关注的问题。但我不明白为什么桌面应用程序会有这种限制,因为其它所有应用程序都可以访问系统任何目录。
缺点
Tauri 最大的特色是它的设计。更准确地说,是前端和后端的分离。我喜欢 Vaadin 的地方在于它管理着前端的一切,让你只需学习框架。它允许后端开发人员构建 Web 应用程序,而无需关心 HTML、CSS 和 JavaScript。
Tauri 虽然是一个桌面框架,但却做出了完全相反的选择。就是,你的开发人员和团队需要了解前端技术。
更“糟糕”的是,这种分离重现了使用浏览器技术,创建 UI 时创建的请求/响应式模型,(提示:早期的桌面应用使用观察者模型)该模型更适合用户交互。我们只是在将应用移植到 Web 上后才围绕请求/响应模型设计应用。在我看来,在桌面应用中使用此模型是一种技术倒退。
结论
Tauri 有很多值得开发者喜欢的地方,主要是围绕用户体验的一切。如果你或你的团队擅长并喜欢Web技术,请尝试 Tauri。
但是,这对我来说并不可行:为了创建一个简单的桌面应用程序,我并不想学习如何居中div或者了解 flexbox 布局。
作者:亚历山大 ·阮