前几天去 electron 官网看了下,差点惊掉下巴,记得我一年多前把玩 electron 的时候才 5.0,现在版本号已经飙升至 9.0,现在版本这么不值钱的吗?而且要开发个 electron app,被动升级也太频繁了。
我去看 electron 的主要原因是想瞧瞧 electron 有没有可能和 deno 结合,结果看到一个 issue 提出同样问题,被项目贡献者无情否定:electron 需要将 node 与 chromium 同时编译,而 chromium 的编译工具不支持 rust 与 c++混编。
我回想了一下我对 electron 的主要不满:
- node 在桌面环境冷启动性能略显捉急,特别是页面复杂,包含本地数据库的情况下;
- electron 本身带个完整的 chromium,导致 App 包体太大;
- electron 虽然打包出来是个单独 App,但实际上会在硬盘上安装,而且它默认的 win 安装器会装在个人文档下,把文件完全展开,一个是把个人文档下搞得乱七八糟,其次是页面容易被篡改,安全性存在问题;
- electron 在跨平台上还是有不少坑,现在操作系统每年一次大更新,而 electron 跟随各平台新特性的速度没那么快,比如 electron 转 UWP,之前微软出了个官方工具,但已经两年没维护,项目 issue 一堆问题无人解决。
我曾经也寄希望于 react native for desktop,不过这个感觉没发展起来,随着 RN 逐渐没落,这个更没指望了。
我之所以对 deno 报以期望,是因为它的设计目标之一就是对桌面应用的支持,主要是两个重要特性:应用沙箱和浏览器兼容。而它的单一可执行程序特性也是对桌面应用非常友好的。
不过现在指望 electron 支持 deno 是从底层上彻底没希望,社区目前对于 deno 开发桌面应用的尝试是 webview-deno 项目(link),用 deno 调用系统级 webview 。
我依稀记得之前见过这样的思路,不过各个操作系统的 webview 所用的引擎差异很大,因此兼容性不太好,这也是为什么 electron 要带个 chromium 的原因,我觉得这条路是走不通的。
所以 deno 啥时候能有个好用的桌面应用框架呢?