重启 Vaultoz 后,我又翻了一遍二三月的选型记录。那阵子桌面端做得不顺,就总想试另一个框架。换过去才发现,文件选择、窗口管理、媒体预览和配置保存,又得从头接一遍。
二月认真考虑过 Rust,也做过实验。最后还是留下了 Go:加解密、分块、元数据和 S3 访问都已经在跑,重写它要付出的时间太多。移动端用 gomobile 把核心放进进程,桌面端启动本地子进程,两边都通过本地 HTTP 访问。启动方式的差异留在适配层,文件和任务的处理规则共用。
手机和桌面分开做
Flutter 桌面做了一段时间后,界面越来越像放大的手机,代码里的平台判断也多起来。我把这条运行路径退掉,手机端继续用 Flutter,保留已经接好的文件、录音、媒体和原生入口。
三月转到 Electron 后,React 的组件和浏览器交互更方便我处理键盘、拖放、右键和复杂浮层。基础体积和内存开销会大一些,后面仍得逐项处理缓存、播放器和后台任务。
现在的调用关系是:
Flutter / Electron → 本地 Go 核心 → S3手机点按打开文件,电脑双击打开,界面各自设计。取消上传要留下什么、保存记录会生成什么,都交给核心处理。这次继续开发就沿用这套组合,先把手里的具体问题修完。