再见,Electron。你好,Tauri!
利用 Rust 驱动的后端框架与 React 前端相结合,提供出色的无浏览器体验
许多开发者都能讲述他们对 JavaScript GUI 框架的爱恨交织,该框架彻底改变了许多桌面应用程序的开发方式。事实上,我们今天使用的许多应用程序,无论是开发、社交媒体、通信……还是其他任何领域,都是使用 Electron 框架构建的。
如果您好奇,请查看其网站上使用 Electron 的应用程序精选列表。
重点是,Electron 为具有 Web 开发经验的开发者提供了为多个平台创建独立桌面应用程序的机会……所有这些都无需学习任何新的编程语言!它提供了使用我们许多人一直在使用的 JavaScript、CSS 和 HTML 的能力,这当然非常棒!
简要总结一下 Electron 如何实现这一功能:
Electron 是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。通过将 Chromium 和 Node.js 嵌入到其二进制文件中,Electron 允许您维护一个 JavaScript 代码库,并创建可在 Windows、macOS 和 Linux 上运行的跨平台应用程序——无需任何原生开发经验。
使用 Electron 构建桌面应用的最大缺点之一,正如大家在 Stack Overflow 和其他论坛上看到的……就是生成的二进制文件往往非常大!即使是中等规模的代码库,最终生成的二进制文件也可能达到约 60MB。
在亲身经历了这种挫折之后,我开始怀疑是否有一个神奇的解决方案来解决这个问题......事实证明,Rust 恰好提供了一个!
Tauri 是一个工具包,可帮助开发者使用几乎所有现有的前端框架为主流桌面平台开发应用程序。其核心基于 Rust 构建,CLI 利用 Node.js,这使得 Tauri 成为一种真正意义上的多语言开发和维护优秀应用程序的方法。
深入探索
令我兴奋的是,他们的命令行脚手架工具能够创建所有你需要的 Rust 文件,让你能够使用熟悉的前端框架启动并运行。不仅如此,当我准备开始向后端添加自定义函数供 UI 使用时,Tauri 还能让一切无缝衔接!
我决定尝试使用 Tauri 为我计划参与的社区项目创建一个新的桌面仪表板应用程序,并且剧透......它没有让人失望!
正如我之前提到的,入门相当简单:
- 确保您的系统已安装 Rust
- 如果在 Windows 或 Linux 上,请确保安装相关的依赖项
- 运行一个简单的命令来设置你的项目
之后,我需要将所有前端源文件整合在一起,同时当我需要一些有关 UI 和后端之间的进程间通信的指针时,偶尔会参考 Tauri 的文档。
#![cfg_attr( | |
all(not(debug_assertions), target_os = "windows"), | |
windows_subsystem = "windows" | |
)] | |
use reqwest; | |
use std::io::Read; | |
#[tauri::command] | |
fn get_data(address: String, endpoint: String) -> String { | |
let request_url = format!("http://{}/{}", address, endpoint); | |
let mut res = reqwest::blocking::get(&request_url).expect("REQUEST FAILED"); | |
let mut body = String::new(); | |
res.read_to_string(&mut body).expect("Couldn't read into buffer"); | |
return body; | |
} | |
fn main() { | |
tauri::Builder::default() | |
.invoke_handler(tauri::generate_handler![get_data]) | |
.run(tauri::generate_context!()) | |
.expect("error while running tauri application"); | |
} |
使用 Tauri 创建仪表板的好处在于,我不再需要费心创建单独的preload.js
文件才能正确利用进程间通信。
我所需要的只是在main.rs
我想要从 UI 调用的函数上方添加适当的注释,并在我的 Reactjsx
文件中添加一行简单的附加导入行:
import { invoke } from '@tauri-apps/api/tauri'
Tauri 构建的应用的强大之处最终在于其后端使用了 Rust。这使得像我这样的开发者能够将他们的最终产品构建成原生运行的二进制文件,其大小仅为许多 Electron 构建应用的一小部分。
结论
至少对我来说,Tauri 显然有潜力继续发展,最终超越 Electron,成为主导性的“前端”GUI 框架。尽管由于基于 Rust 构建,可能会有些许挑战,但花一点时间去了解它的内部原理,绝对值得!
我鼓励任何想要开始前端 GUI 开发之旅的人查看 Tauri 框架,并抵制立即将 Electron 视为直接解决方案的冲动……我向你保证,你会感到惊喜!
为了完整起见,您可以在我的 Gitlab 上找到我社区项目的完整代码库。如果您正在为自己的项目寻找灵感,不妨去看看!
💻 也看看我的 Github!文章来源:https://dev.to/dedsyn4ps3/goodbye-electron-hello-tauri-26d5