对这个话题,差不多两年前有一个简单的小调研:跨端桌面应用解决方案与开发
没想到过了这么久,这个话题几乎还是保持原封不动的结论!
Electron 姿势
在这次着手准备之前,我把希望放到了Electron上,于是分别调研了electron-vue和electron-react
一顿脚手架把玩之后,除了后者看起来规范一些外,前者运行都报错issues。如果你是非常钟爱 react + redux + ts 组合的人,那入坑就对了。基本上你要的模板代码都有,包括prettier这种都是给你配置好了的,工程化结构很清晰。反观 vue 模板,electron 版本竟然在2.0.18……wtf,这都 2020 年了,查了下那还是 9012 年 3 月份的版本,这一年Chrome都升级 N 次了,注意现在已经到 81.x 了……
除了版本落后外,vue 库更新算是比较慢了,最后一次提交是在 4 个月前。react 版本是 9 天前,所以这也是为啥推荐入坑 react 版本的原因。当然,我比较头疼是不只是版本问题,Electron 本身存在的重大缺陷之一的打包文件体积大似乎这段时间并没有啥改善……
于是我又看了下它表兄弟:electrino,好家伙更新倒是在 29 天前,不过文档写的迷一样,几乎不知道怎么开始,有个issues比较有意思,之后随便翻了下 google 发现资料少的可怜,于是我也就准备弃坑了!
在这之后,我把目光放到了:react-native
React-Native 大法
如我之前调研的结果一样,这么长时间以来这个方向几乎还是那几个库,其中react-native-macos也已经半年没有过提交记录了,我试着运行了下脚手架,但初始化都失败了,见issues。然后releases列表里头最近的 tag 是支持到 RN44,拜托现在官方已经 62.2 了,看来作者差不多也是弃坑跑路了……
不过 windows 下的react-native-windows在微软强有力的支持下,更新倒是挺频繁,我也相信应该是目前 React-Native 大法最佳的桌面端实现,不过我用的是 macOS,就没再去尝试 demo……有 windows 条件和需求的可以看看,人家确实挺用心在搞:getting-started
一个小插曲,我发现RN-Win 官方说支持 Mac,结果文章下头却是:Coming soon!。翻到ms-rn后,我又发现一个MR
看上去,微软这个库支持 Mac 啦,我带着惊喜的心情做了如下尝试,结果发生了这些事情:issues
最终,通过各种猜测尝试,微软的这个库在 macOS 下终于跑起来了(顺便还在本地搭起了 npm 私服,虽然只有一个 package……)
私服的小插曲
在用Verdaccio为ms-rn搭私服的过程中,还遇到个问题,就是当我直接把微软的代码 pull 到本地 publish 到私服去用时,cli 竟然是拉的0.60.0-microsoft.67版本,就算指定了最新的 latest,react-native init AwesomeApp
也是执行失败,后来意识到私服上没有这个版本,于是切到 tag 里疯狂的 publish 了一顿,最终初始化成功
工程相关
结果还是比较理想的,简单的开发体验非常友好,另外 Electron 体积大的问题,RN 方案算是质的飞跃,即使 demo 也要 12.8 MB