應用匯開源思考長篇分享

Electron 入侵:Linux 桌面應用開發的無奈

很長一段時間之內,在 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。

在 VSCode 上編寫的 Node.js 項目

倘若我們拋開技術和程序員的個體視角,從整個行業上來看,要找到一群熟悉以上所有這些框架的員工,對企業來說顯然不太現實。而維護數個獨立的開發團隊的代價則過於高昂,這種情況導致了許多公司乾脆選擇放棄用戶群較少的平台,或者是花式擺爛仰卧起坐———就像之前的 Linux QQ 那樣,而 Electron 的出現恰恰填補了這一空缺:只有前端開發能力的程序員也可以開發跨平台桌面程序了,這就大大降低了跨平台所需的人力成本;同時,依靠其優秀的平台獨立性,也可以在最大程度上保障各個平台的體驗相對一致,實際上,最近的 Linux 軟體生態的改善,有相當大的增量就是 Electron 帶來的,許多人對此喜憂參半,喜的是 Linux 桌面生態這麼多年死氣沉沉,終於有了長足的進步;憂的是 Electron 軟體資源佔用誇張,會不會導致 Linux 用戶原本引以為傲的效率淪為空談?

不過在筆者看來,Electron 也並非如此十惡不赦,性能方面也並非無可救藥。例如微軟使用 TypeScript 編寫並優化的 VSCode 就在各個平台都展示出了相當優秀的性能,獲得了程序員們的廣泛好評。事實上,所有框架都有不少編寫水平低下,資源浪費嚴重的應用,誠然,基於瀏覽器的 Electron 有它的原罪,但 VSCode 也證明了它的潛力。況且藉助前端技術的幫助,不需要費多大的力氣就能開發出界面十分美觀的應用,而使用傳統框架實現同樣的效果卻往往要花費數倍的經歷,效果卻往往差強人意。它較低的入門成本也是優勢之一,前端開發者們可以較為輕鬆的上手,對於桌面程序稀缺的 Linux 來說,這無疑是一個好消息。

隨著越來越多的基於 Electron 編寫的程序出現在 Linux 平台上,或許它在數量和功能性上的長處能彌補它在效率和佔用上的不足,至於這一趨勢能否持續,它能否最終贏得用戶們的芳心,就讓我們拭目以待吧。

參考文章及倉庫:
https://github.com/ShirasawaSama/CefDetectorX

對這篇文章感覺如何?

太棒了
8
不錯
2
愛死了
1
不太好
0
感覺很糟
0

You may also like

11 Comments

  1. 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.

  2. Nice post. I used to be checking continuously this
    weblog and I’m inspired! Very useful info specially the remaining
    part 🙂 I take care of such information much. I used to be seeking this certain info for a long time.
    Thank you and good luck.

    My blog post :: nordvpn coupons inspiresensation, http://t.co/gz5Gi0YSYB,

  3. 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]

  4. bookmarked!!, I really like your site!

    Also visit my site :: nordvpn coupons inspiresensation, tinyurl.com,

  5. 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)

Leave a reply

您的郵箱地址不會被公開。 必填項已用 * 標註

這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

More in:應用匯

應用匯

使用這個擴展將GNOME轉換為灰度

想在睡前減少屏幕時間嗎?介紹GNOME Bedtime Mode——一款創新的擴展,可將您的GNOME工作區轉換為灰度,提供更輕鬆的體驗。 您是否經常發現在睡覺前放下設備很有挑戰性?好消息是,有一個有 […]