
很长一段时间之内,在 Linux 上开发桌面应用似乎就只有两种选择:C++ 的 Qt 或者是 C 的 GTK+,两者都有着各自的拥趸和核心软件,例如 KDE 和 Gnome。然而,随着 Electron 的强势入侵,这一平分秋色的局势大有被打破的局势,但这对我们终端用户而言,真的是一件好事吗?
愤怒的用户
笔者在之前的文章里介绍过最近发布的新版 Linux QQ,相比之前基础功能都残缺不全的旧版 Linux QQ 而言,它自然是一次体验上的飞跃,然而它也有一个致命的缺点不得不提——它是用 Electron 框架开发的,自然,这意味着巨大的内存占用,笔者使用的电脑配备了 16 GB 的内存,因此对这一点感触倒不是很深,然而对于那些内存比较吃紧的 Linux 用户来说,本来他们绞尽脑汁让内核+桌面环境的内存占用压缩到 500 MB 以下,然而只消打开一个 QQ,占用的内存就比整个系统还要多——这几乎是无法接受的。
Chrome 在早年几乎是速度的代名词,它一经推出就以摧枯拉朽的速度取代了 IE,成为了浏览器行业的霸主,然而,自从它成为了这一领域无可置疑的王者之后,它的风评却反而急转直下,如今,提起 Chrome,比起速度人们最先想起来的,是它堪称离谱的内存占用,这甚至成为了某种流行文化符号,网络上关于 Chrome 吞噬内存的梗图也是层出不穷:
自然,基于 Chromium 和 Node.js 的 Electron 天生就不可能省内存,除了夸张的内存占用,这些软件相比原生软件的磁盘占用也要多得多:想想也不难理解,相当于每个软件里面都附带了一个 Chrome 浏览器嘛——还要再加上数量相当夸张的 npm 库,体积怎么也小不下来。再者,相比与操作系统提供的 UI 渲染框架,基于浏览器和前端技术的界面也会耗费更多的资源,对低配用户十分不友好。
由于 Electron 的这些问题,用户们对它的“喜爱”也是溢于言表,甚至有人专门做了一个软件用于检测系统内安装了多少个 Electron 应用,讽刺的是,这个检测器本身也是用 Electron 框架编写的,不过需要说明的一点是,这里的 CEF 应用指的是所有使用 libCEF 库的应用(即使用 Chrome 内核),并不一定是 Electron 应用。
跨平台不易
那么,既然 Electron 有着这样那样的缺陷,为什么用它开发的应用却越来越多呢?是他们想故意恶心用户吗?实际上,开发者们使用它,比起主动选择,更多的是出于实在没得选的无奈。
在 Electron 横空出世之前,要给各个操作系统开发跨平台的桌面应用是非常困难的一件事,每个系统都拥有自己专属的开发框架,Windows 有 WPF 和 MFC,Mac 有 Cocoa,而 Linux 则是 GTK+,看到这里,有的读者可能会说,Qt 呢?人家可是正经的跨平台框架吧?不过如果你真的用它开发过跨平台程序应该就会明白,Qt 虽然具备理论上的跨平台能力,但想让它无缝对接各个系统却十分困难,基本上都离不开大量的修改,更遑论有不少实现只能兼容某个特定的平台,放到别的平台上就成了一团糟了:在这些无奈的现实下,浏览器似乎成为了唯一的解决方案,毕竟这是少数几个可以做到跨平台统一 API 的东西,将其本地化的尝试最终催生了 Node.js 和 Electron。
倘若我们抛开技术和程序员的个体视角,从整个行业上来看,要找到一群熟悉以上所有这些框架的员工,对企业来说显然不太现实。而维护数个独立的开发团队的代价则过于高昂,这种情况导致了许多公司干脆选择放弃用户群较少的平台,或者是花式摆烂仰卧起坐———就像之前的 Linux QQ 那样,而 Electron 的出现恰恰填补了这一空缺:只有前端开发能力的程序员也可以开发跨平台桌面程序了,这就大大降低了跨平台所需的人力成本;同时,依靠其优秀的平台独立性,也可以在最大程度上保障各个平台的体验相对一致,实际上,最近的 Linux 软件生态的改善,有相当大的增量就是 Electron 带来的,许多人对此喜忧参半,喜的是 Linux 桌面生态这么多年死气沉沉,终于有了长足的进步;忧的是 Electron 软件资源占用夸张,会不会导致 Linux 用户原本引以为傲的效率沦为空谈?
不过在笔者看来,Electron 也并非如此十恶不赦,性能方面也并非无可救药。例如微软使用 TypeScript 编写并优化的 VSCode 就在各个平台都展示出了相当优秀的性能,获得了程序员们的广泛好评。事实上,所有框架都有不少编写水平低下,资源浪费严重的应用,诚然,基于浏览器的 Electron 有它的原罪,但 VSCode 也证明了它的潜力。况且借助前端技术的帮助,不需要费多大的力气就能开发出界面十分美观的应用,而使用传统框架实现同样的效果却往往要花费数倍的经历,效果却往往差强人意。它较低的入门成本也是优势之一,前端开发者们可以较为轻松的上手,对于桌面程序稀缺的 Linux 来说,这无疑是一个好消息。
随着越来越多的基于 Electron 编写的程序出现在 Linux 平台上,或许它在数量和功能性上的长处能弥补它在效率和占用上的不足,至于这一趋势能否持续,它能否最终赢得用户们的芳心,就让我们拭目以待吧。
ftmial
dmxbkw
350fairfax nordvpn coupon
Nice post. I learn something new and challenging on sites I
stumbleupon everyday. It’s always interesting to read articles from other writers and use a little something from their web sites.
Nice post. I used to be checking continuously this
I take care of such information much. I used to be seeking this certain info for a long time.
weblog and I’m inspired! Very useful info specially the remaining
part
Thank you and good luck.
My blog post :: nordvpn coupons inspiresensation, http://t.co/gz5Gi0YSYB,
Hi, i read your blog occasionally and i own a similar
one and i was just curious if you get a lot of spam comments?
If so how do you stop it, any plugin or anything you can suggest?
I get so much lately it’s driving me mad so any assistance is very much
appreciated.
Feel free to visit my page nordvpn coupons inspiresensation [easyurl.cc]
bookmarked!!, I really like your site!
Also visit my site :: nordvpn coupons inspiresensation, tinyurl.com,
You are so awesome! I don’t think I have read
anything like that before. So good to find somebody with
some original thoughts on this subject matter. Really.. thank you for starting this up.
This website is one thing that is required on the web, someone with a little originality!
My blog post nordvpn coupons inspiresensation (da.gd)
upw0qp
ac4jua
xvofvf
0c5cdy