想找到一些表现非常烂的Electron应用(下文简称为EA,意为Electron App)并不难,而且表现烂的原因都是一样的——太慢了。EA的安装包很大,而且运行起来会占用很多内存。EA其实就是网页,使用Electron的开发者们其实就是因为跨平台开发会更加方便,或者说他们比较“懒”。本质上来说,原生APP在任何一方面的表现都更好些。
不知为何,当果粉们发现他们用的APP不是原生的或者他们喜欢的应用准备迁移到Electron时,经常会出现一些争论:他们怎么敢这么做!
表面上看,我同意大部分关于Electron的看法,但同时,我一点也不在乎,你也不应该。
下面让我们看看其中一些观点:
它很慢
从EA的核心上来看,它是一个没有用户界面的浏览器。它就是一个渲染器,而且和普通的Web程序一样,使用HTML、CSS和JavaScript来构建界面并且提供功能。这里其实是有很多额外的层级的,并且由于额外的一些抽象操作,EA比经过调试的原生APP慢一些,但要注意:慢一点并不是是慢。
现在有很多EA其实也挺快的,也有很多原生APP挺慢的。在当今世界中,EA并不出众就是归根结底还是因为它们的慢。
它占用了大量内存
这倒是真的,EA上额外的抽象层意味着这些APP就是会比原生APP占用更多内存。但内存买来不就是为了用么?为什么你不想让APP用呢?
当然了,你不会希望一个小工具就占用了你90%的内存,但这并不是我们讨论的内容。但如果真发生了这样的事,那就是EA导致的内存泄漏,这是一个BUG,同样的BUG也有可能发生在原生APP上。
而且,APP占用的内存是相对的,甚至Safari浏览器的一个Tab就可能占用几百兆的内存,那为什么要为一个占用同样大小内存的APP而担心呢?
如果某个EA对你来说挺重要的并且你的内存也够,那么为什么还要担心呢?
它的安装包太大
诚然,每个EA都包含了独立的Chromium和Node,结果就是它们的体积很大,400MB也不是不可能。尤其在Mac上,因为它需要有一个针对于Intel和Apple架构的通用二进制文件。
这中体积意味着我只能在我的1T硬盘上放2500个APP!放心吧,现在硬盘的体积已经让你不用担心这个问题了。
但安装包太大不仅仅是存储上的问题,网络呢?400MB下载起来已经挺大了,但你确定么?当我写这篇文章时,我3岁的儿子正在网飞上在线看《汪汪队》,我在办公室里在线听歌。同时,我的电脑还在下载2个G的软件升级包,我家的摄像头还在不断的上传1080P的视频到云上。
并非每个人都如此幸运,可以不掉线、不限流量、非常快的上网,每个APP里都有一个Chromium确实是非常低效的。
但你不会听到抱怨EA体积的人也抱怨原生APP的大小,但为了比较,让我们看看这些软件:
- page——651MB
- Word——2.23GB
- PS——3.72GB
- Final Cut Pro——3.86GB
甚至是1Password的非Electron版本也达到了222MB。
现在的安装包体积确实大,也许它们不应该这么大,但以这为理由来反对Electron就有点没道理了。
它只是网页
是的,你可以用Electron包裹一个已有的网页或者网页应用来生成一个EA,毕竟Electron就是一个浏览器。
但你也可以在原生APP上这么做,只需要用原生APP打开一个WebView来加载网页即可。很多原生APP的一部分UI都是由WebView构成的,甚至一些苹果自带软件也是这么干的。
但大部分EA不仅仅简单的在网页上包了一层,Electron提供了Node和一些其他的网页应用不具备的能力,包括了大量的操作系统API的集成,EA甚至可以在需要的时候直接执行原生代码。
EA对于网络或者云的的依赖也不是必须的,它们可以像原生APP一样做到完全独立和离线使用,虽然它们用了和网页开发相同的技术,但它们真的不一样。
它们的开发者很懒
在那些反对Eelectron的观点中,最具有侮辱性的就是一点就是——EA的开发者很懒,或者说它他走了捷径,更有甚者说他们不是合格的开发者。
首先,开发者们的选择建立在市场的经济现状上;其次,一个APP做出来了,无论它用的是那种技术方案,总比那些没做出来的APP好。
举个例子:我为发廊进行软件开发工作,主要技术是Electron,并且荷兰的很多发廊都在使用。在这些发廊中,有超过95%的用户用的是Windows电脑。所以,我们可以选择用Electron去同时支持Windows和macOS,或者说根本就不支持macOS。
专门为macOS开发一个原生APP是不可行的,即使价格翻两倍、三倍乃至四倍也不行。所以说选择不在于EA和原生APP之间,而是在于EA和没有macOS软件之间。
不过即使我们从头再来,并且不用支持除了Window以外的其他系统,我们大概率还会使用Electron而不是做一个Windows原生APP。这不是因为我是一个懒惰的开发者,而是因为我知道我的长处在哪;不是因为我不知道怎样开发一个原生APP,而是因为我更喜欢Web技术。
原生APP更好
“它确实是一个好APP,但如果它是一个原生APP那就更好了”。
在过去的十年里,我从来没有得到过这样的反馈,一次也没有。
因为用户根本不关心。
如果你开发了一个对用户来说很有价值的APP,他们不会关心隐藏在APP后面的技术,他们的要求只有一个:这个APP是我想要的么?这个APP可以解决我的问题么?
用户只会关心一个软件能做些什么事,而不是它怎样去做这些事。