这是我参与「第四届青训营 」笔记创作活动的第六天
electron初体验
我为什么要用electron呢?因为我想要放飞自我一次,开发个桌面端软件试试,就在字节青训营的大项目中选择了基于electron的自定义项目。
于是,我就开始接触了心目中极为美好的electron世界。
什么是electron:
是GitHub开发的一个开源框架。[6]它通过使用Node.js(作为后端)和Chromium的渲染引擎(作为前端)完成跨平台的桌面GUI应用程序的开发
wiki上如是说
使用JavaScript,HTML和CSS构建跨平台的桌面应用程序
官网首页如是说
我一言以蔽之:一个可以让web前端工程师开发桌面端软件的框架
同时它会屏蔽掉底层的许多不必要细节,让我们可以通过一套web代码,实现win、mac、linux的跨端,省时、省力(至少看起来是这样的)
很显然,根据上面的内容来看,仿佛electron很完美:跨端、省力、热更新
然而,要是它真的这么完美,那早就被electron一统了
那它的问题有哪些呢?那自然是有很多坑啦 就像曾经有一位经验丰富的工程师表示RN这种跨端框架只有大公司用得起,遇到了bug可以重写,而小公司遇到了只能望洋兴叹。 于逝,我就遇到了一些可能真的需要重写的,就想和大家聊一聊
我踩过的坑:
版本 breaking change:
如remote模块的弃用,其中不同的模块被分到了electron、@electron/remote的地方,使得许多的老资料出现了bug……
当然,这个算是前端领域的通病,react也有这种现象,只要及时追官方文档,查issue都可以
解决方案: 及时查官方文档,少看二手资料,以及去github上提issue
与react接入较困难:
electron是一个框架,react也是一个,要把两个装在一起,还是颇有难度的
react有热更新,但electron没有,就需要人工添加热更新,而二者又不是同步的,因此需要一些第三方包的配合才能实现较好的效果,比如:
……
在使用了以上包后,有了不错的效果,但这个成本,emmm……
当然不止这一种解决方案:github同样提供了配置好的脚手架,但可惜是ts的,我的ts目前菜的扣脚,就没好意思用……
然后也可以使用字节跳动出品的modern.js来解决这个问题,它会提供react、electron的组合,ts与js可选,但缺点就是有些太庞大了,对electron也有进一步的封装,学习成本也会较高
解决方案: 自己动手 | 翻github | 用现有的更高级框架
第三方包引起的bug:
主要是electron-store,在接入之后source map会出现一定问题,且暂时无较好的解决方案
我翻了一宿的issue,发现好像确实是没有办法解决……
于是就用-Dev的filter除掉了所有的warning,但缺点很明显,一部分bug会出现报错看不到的情况……头秃
可能这个就是之前提到需要重写的那种bug吧
解决方案: 治标不治本,如果有大佬知道怎么解决务必教教我
以上就是我目前electron的一些不好的体验了,当然受限于个人水平,很多事情可能有失偏颇,所以还请各位海涵!