Electron 自带浏览器运行时是内存大头
对比:SwiftUI 复用 macOS 已加载的系统 UI 框架;WKWebView 复用系统 WebKit,通常比自带 Chromium 更轻,同时仍能复用 Web UI —— 代价是与 Chrome 渲染细节可能略有差异,JS 与本地数据仍需 bridge。
壳的三种选择
| 方案 | 复用 | 代价 |
|---|---|---|
| SwiftUI 原生 | 系统 UI 框架 | 要重写一套 UI |
| WKWebView 壳 | 系统 WebKit + Web UI | bridge、渲染细节差异 |
| Electron | 自带 Chromium + Web UI | 常驻浏览器运行时内存 |
不要凭印象否决壳方案
把长期驻留内存设成硬验收指标,做最小原型实测 SwiftUI 与 WKWebView 两条路径再决策。前提是先回答「这个 App 是不是全天常驻」——常驻型(持续承接剪藏、订阅、同步)才必须严格控制内存。
多标签切换不必照抄 Chrome 的多网页模型:可以让一个 WKWebView 始终常驻,前端只切换当前标签对应的页面,后台标签只保存轻量状态;切换时不重启 WebView、不重新下载 JS、不访问网络。
延迟不要口头保证,先写成硬验收(如 P95 标签切换 <100ms 且不显示 loading),达不到再考虑保留最近使用页面的渲染状态,不提前引入 Chrome 式(Frozen / Discarded)淘汰机制。
相关
- 本机资源占用排查 —— 本条是它在「内存」这一层的实例
- 列表切换要用master-detail而非重建列表
- 服务端缓存与浏览器缓存的边界
- 本机卡顿先清残留开发进程
- 项目占空间先查构建缓存与旧worktree
- 运行时依赖属于平台不属于业务代码