初始 Tauri 篇一之初窥门径
为什么是 Tauri
能够实现多端桌面 app 开发的软件不少,主流有 Electron —— 一套 js 打天下,Flutter —— 移动端桌面端我全要,Qt —— 我要打10个! ……
但问题也不少,Electron 体积实在没法优化;Flutter 更多还是移动端开发;Qt,能用 Qt 开发的选型对他们来说肯定不是问题。
那为什么是 Tauri?
对我个人来说,就是馋 Web 的界面,不想放弃性能,又想要较小的体积,Tauri 基于 Webview 实现的前端和基于 Rust 实现的后端刚好能够帮我实现这些需求。我也用 Qt 或 PyQt 写过几个桌面端的 app,性能和体积都可以做到很好,但是就是这个界面实在是优化不上去,当然这个纯属个人水平问题。
最后还是要提醒,由于 Tauri 目前也是刚刚初版完善起步,6月19日才发布了正式 1.0 版本,且由于生态尚不完善,文档水平一般,rust 学习成本较高等,可以说 Tauri 现在更适合实现那些不太需要后端操作的应用,入坑需谨慎!
环境配置
Tauri 环境配置其实并不难,安装好 node 环境和 rust 环境,然后就可以通过 npm 命令直接生成程序模板进行开发了。
Linux 及 Macos 环境配置
1 |
|
Windows 环境配置
访问 Rust 官网,在 Rust 安装 界面下载对应版本程序,根据指示进行安装。
安装完成后进行环境变量的添加:编辑系统环境变量 -> 环境变量 -> 系统变量 -> 编辑变量 Path -> 添加对应路径,一般是 C:\Users\xxx.cargo\bin。
校验配置
1 |
|
第一个程序
1 |
|
在编译过程中会发现 Tauri 前端用的是 Vite,真香!
如果发现下载相关依赖较慢,可以选择修改包管理器的源。
1 |
|
锵锵!程序正常运行了起来。
编译发布
1 |
|
如果发现编译时卡在。
1 |
|
可以选择手动下载相关依赖,在 wixtoolset/wix3 release 下载 binaries.zip 文件,将文件中的内容解压到 ’C:\Users\xxx\AppData\Local\tauri\WixTools\‘ 目录即可,没有对应目录则创建,Linux 和 Macos 好像暂时不受这个问题困扰。
自问自答
1. 官方教程都在哪里?
Rust 相关教程可以看这两个 官方:The Rust Programming Language (中文版见Rust 程序设计语言 简体中文版),社区:Rust语言圣经。
Tauri 相关教程见 Tauri 官方指南,还有零零散散的第三方教程等待发现。当然,娴熟地翻阅 Tauri 官方 api 文档 也不失为一种跟着教程学习。
2. 我还需要哪些工具辅助开发?
以 VSCode 为例,请一定要安装 rust-analyzer 插件,优秀的类型提示和 warning 提示大大减少了 rust 开发的心智负担。
但需要注意,该插件可能一下子会占用较高内存,约 2G 左右,而且可能会占用大部分的磁盘读写导致影响 PC 多开 Chrome 或同时执行其他任务。
3. 是否有官方例子借鉴?
当然有!Tauri 官方例程 从基础的 api,到多窗口,再到侧载其他语言依赖,都在这里有相关实现。
4. 第三方的包去哪里找?插件呢?
rust 第三方包在这里找 crates.io, 可能会看到想找到第三方包已经很久不更新了,请不要直接放弃,可以前往包的 github 仓库查看,说不定是有更新但是没同步。
tauri 相关插件可以用关键词 tauri-plugin 在 crates.io 中搜索,也可以直接在 plugins-workspace 看推荐的插件。
5. 有没有优秀的项目推荐?
以下是目前为止我发现的不错的项目,类型比较丰富,当然也欢迎推荐,更多可见 awesome-tauri: Apps。
6. 怎么 Debug 呢?
⚠️ 作者暂时没发现能同时调试前后端的方法,即前端调试时后端无法打断点,后端调试时同理,有知道怎么做的请务必教我
根据 官方文档 Debugging in VS Code ,首先安装好 CodeLLDB 插件,创建好 .vscode/launch.json 和 .vscode/tasks.json。
对于纯前端 debug,执行 pnpm tauri dev
命令后,在 src 文件夹, 首先要修改 launch.json 为前端模式,或者删除之前创建好的 .vscode/lanuch.json 然后直接 F5 ,选择 Web App(Chrome) , 然后发现 localhost 拒绝了连接请求。
不急,我们回看 TERMINAL 看到 VITE Local: ‘http://127.0.0.1:1420' ,将 launch.json 中的 url 地址换成 Local 相同地址,此时再次 F5 ,就可以正常加断点 debug 了。
那当然我们也会想要 Vue.js devtools, 官方其实也提供了本地版本,根据 官方文档 一步步来就行。
无论此时用的是什么包管理器,建议仍然使用 npm 安装,yarn 和 pnpm 都会存在跑不完或时间很长的情况,毕竟相当于是直接下载一个 electron 程序的源码并安装相关依赖编译。
1 |
|
然后在 project 根目录下 index.html 中插入如下代码,稍作等待即可正常使用。
1 |
|
对于后端 debug,不用执行任何命令,恢复 launch.json 和文档一致,然后在 src-tauri 文件夹,直接 F5,若遇到如下提示,选择 Debug Anyway 即可。
7. 我怎么还卡住了?
rust 在编译的时候很容易遇到一个问题就是卡在
1 |
|
为什么会卡在这里?可能是同时有别的项目在编译,或之前多开了相关的 rust 程序处在编译过程中,解决方式也很简单,执行下面的命令后重新编译即可。
1 |
|
8. 能不能不用安装直接运行?
果然!做桌面端的都是有追求的!
但很可惜,实际上并不可以。
如果你用 QT 开发过 App 的话应该会很熟悉直接将 .exe 程序和 一堆 .dll 文件直接复制即可运行。
在编译后我们很容易看到 release 文件夹下的 tauri-app.exe 文件,双击也可以正常运行。
但当我们将整个文件夹复制到另一台 PC 时我们会发现程序直接闪退。
只有用 .msi 安装包安装才能正常运行,而且安装目录下基本也看不到 .dll 相关文件。
更多讨论可见