接上一篇Web 打印服务之需求篇,这篇主要关注实现过程。
1、用最熟悉的技术栈 Electron 初探
一开始是用 Electron 来做,做完之后发现有几个问题:
- 安装包太大
- 很容易被抄袭(源码无法保护)
2、追求安装包最小 Slint
后来尝试用 slint(Slint is a declarative GUI toolkit to build native user interfaces for Rust, C++, or JavaScript apps.)
遇到的问题:
- 界面是写出来了,但是无法实现需求:“应用关闭时不时退出,而是最小化到托盘。”
- 无法实现需求:“实现启动、关闭 WebSocket 服务”
3、试试 Tauri
后来尝试用 Tauri,遇到的问题:
- 由于 Rust 不熟,靠 ChatGPT 东拼西凑没能实现启动、关闭 WebSocket 服务,卡在这里两个多星期。
- 在 Windows 系统,Tauri 运行占用的内存比 Electron 还高,诧异之余,也不明所以。
总结
最后在谷歌和 ChatGPT 的帮助下,用 Tauri 实现了一个应用。
成果
- MacOS 10.15.7 打包出的 dmg 只有 3.1MB