写点什么

我为什么要使用 Tauri 构建 macOS 磁盘清理工具 PrettyClean

作者:NinetyH
  • 2022 年 10 月 10 日
    北京
  • 本文字数:1286 字

    阅读完需:约 4 分钟

我为什么要使用 Tauri 构建 macOS 磁盘清理工具 PrettyClean

我是一名程序员,工作时使用的 MacBook Pro 磁盘只有 256 GB 。以往,我每年都花费数十美金购买 CleanMyMac 帮助我清理磁盘。直到有一天我想把系统升级到 12.x 的时候发现磁盘不够,导致不能升级。我使用 CleanMyMac 彻底清理了我的磁盘,但是空间还不够。经过分析,发现开发工具以及许多项目留下来的编译结果占用了大量的磁盘空间,当时我就写了一段 Shell 脚本做清理工作,结果回收了 30GB 的磁盘空间,系统也顺利升级了。


相对于大部分人来说这段 Shell 脚本不是很易用,因此我就想能不能开发一款软件来帮助我做到极致的垃圾清理。因此我就使用 Rust 编写了这款软件。


在编写软件之前,我列出了几个核心的功能以满足普通用户与开发者用户的清理需求:


  • 清理常规软件与系统软件的运行缓存与日志。

  • 清理软件开发中使用的构建工具的运行缓存与日志。

  • 清理软件开发中可通过源码重新获得的编译结果等。

  • 简单易用,只扫描极少文件,最大程度保护用户隐私。

为什么选择 Rust 作为开发语言?

PrettyClean 其实不仅仅只使用到了 Rust,我们的客户端界面是使用 TypeScript + React 来编写的。我认为对于开发工具缓存与代码编译缓存的清理不仅仅只体现在 macOS 系统上,使用 Linux 或 Windows 系统编程的开发人员也有同样的清理需求,因此跨平台是我首要考虑的。


另外一个方面就是希望能编译出二进制文件,这样用户可以直接使用 PrettyClean 而不需要单独地安装运行时。


其实在开发的过程中,我发现 Rust 作为生成力工具来说优点远远不止于此,例如 cargo 在处理依赖时并不需要像 Java 项目那样要在依赖管理上花费许多的精力来做依赖项的版本兼容。

为什么选择 Tauri 作为开发框架?

确定了主力开发语言,那么开发框架的选择范围就会小很多,更容易根据自己的情况作出一个好的选择。经过一段时间的调研,基本上确定了两个技术框架,它们分别是:



这两个框架都是非常优秀的跨平台应用框架,最后我根据自己的实际情况选择了以 TypeScript + React 来构建 GUI 界面逻辑,使用 Rust 实现应用的后台核心逻辑。我之前有 Java Swing 的开发经验,那是一段糟糕的体验,目前我认为 HTML + JS 就是最好的界面开发模式了,所以我放弃了 iced, 而 Tauri 成为我最好的选择。


Tauri 采用的是多进程模式,一个应用被分为核心进程与 WebView 进程,这种模型给我们带来了几个额外的好处:


  • 提高了程序的健壮性,当核心进程或 WebView 进程发生任何意外情况时并不会相互影响。

  • 基于 IPC 模式让程序有较好的安全性,给每个进程分配足够完成工作的最低限度的权限,来限制潜在漏洞的破坏范围。


程序的健壮性与安全性是我认为应用首要考虑的问题,而 Tauri 很好地匹配了我的真实需求。


当然,这仅仅是 Tauri 的众多优点中的一小部分,例如我在开发过程中使用到它其他的特性来解决几个典型的问题:


  • 安装包体积很小,PrettyClean 安装包的体积不到 5MB,一方面减少了 CDN 网络消耗另一方面也让用户更容易下载到它。

  • 使用 Tauri Updater 让用户低成本地更新应用程序。

  • 使用 Tauri Event 功能来实现界面的切换等。


以上,是我构建 PrettyClean 的主要原因,以及在使用 Rust 与 Tauri 过程中给我带来的一些不错的体验。

发布于: 刚刚阅读数: 3
用户头像

NinetyH

关注

GrowingIO 服务端架构师 2017.10.15 加入

负责 GrowingIO 亿级 DAU 技术架构与演进

评论

发布
暂无评论
我为什么要使用 Tauri 构建 macOS 磁盘清理工具 PrettyClean_tauri_NinetyH_InfoQ写作社区