作為前端開發,我推薦你一定要學習桌面軟件開發

語言: CN / TW / HK

本文正在參加「金石計劃」

前端已死

自 JS 誕生的20多年間,web開發大放異彩,它以入門門檻低,容易上手吸引了一大批從業者。

在互聯網爆發初期,很多行業開始把業務搬到網上,因此需要大量前端開發,前端工資也水漲船高,甚至達到高級前端開發者一將難求。

此時,在行業紅利期,企業賺錢能力達到頂峯,有足夠的利潤去養活這些高薪的程序員。但是,現在不一樣了,業務的賺錢能力急劇下降,因此裁員是無法避免的。

為什麼會大量裁撤前端呢

或者説,如果你是老闆,當裁員潮到來時,什麼樣的人優先被裁呢

你以為是那些技術不好,學歷不好的人會優先被裁嗎?

其實不是,只要你或者你所在的團隊沒有為公司創造利潤就會被裁,不管你技術有多牛逼。

最近,騰訊前端開發領袖、原騰訊QQ空間技術總監、T13專家黃希彤被裁,這就是一個非常有説服力的佐證。

那在整個開發流水線中,前端的價值體現在哪呢?

前端的工作主要是通過接口API拿到後端返回的數據,渲染到頁面上,前端不會去主動關心數據是從何而來及數據是如何流轉的。這就導致前端在整個開發中起一個打輔助的作用。

雖然,有些公司的前端業務很重,但佔比極少,且集中在BAT這樣的頭部公司,擺脱不了前端工程師成為不了團隊核心,業務專家的命運

對比後台開發的價值,前端開發的價值顯得無足輕重,一旦行情不好,就逃脱不了被裁的命運

但是,在一個團隊中真的就不需要前端了嗎?

當然不是,但又不可否認的是,隨着低代碼的出現,以及以chatgpt為代表AI技術的發展,前端的需求量明顯下降,甚至有些後端都可以幹前端的工作。

同時,大部分公司的前端都只是一個展示的功能,即使你奮鬥幾年讓自己變成高級前端,在大多數情況下還是幹着初中級前端的工作,仍然擺脱不了工具人的命運。

前端開發該如何突圍呢?

前端的出路

現在很多公司招人都有非常苛刻的條件,比如,非985/211名校畢業的不要超過35歲的不要,等等。實際上這怪不得這些公司,主要是競爭某個崗位的人實在太多了。

那作為前端開發者,該怎麼辦呢?

有的程序員乾脆就直接轉行了。但是轉行哪有那麼容易,首先你年齡已經不具備任何優勢;其次,你不具備其他行業需要的知識技能;最後,傳統行業的工資可能不及程序員的一半。

因此,對於程序員來説,轉行是萬不得已而為之的無奈之舉

既然轉行不可取,那麼前端開發者利用自己掌握的知識技能去開闊新的領域也是一個不錯的選擇。比如:用前端技術搞後端(Node.js),用前端技術搞桌面端(Electron),用前端技術搞人工智能(TensorFlow.js),等等。

那為什麼不建議在某一個領域深耕,而是開闊其他領域呢?

比如説深耕vue,或者webpack等某一方面,守着一小塊東西反反覆覆做,雖然在這個領域可以做到專家水平,但實際意義不大,有同類技術出現時很容易被替代。而且,大多數公司的業務都非常簡單,只用了某些技術很少一部分功能。

因此,在今天的前端發展現狀來看,深耕某一領域,只會把路會越走越窄,最終變成流水線上的工人。開闊新的領域,只要選對了溢出方向,路會越走越寬,而且競爭壓力小,持續開疆拓土,輸出價值

下面我將闡述前端程序員出路之一:桌面開發

桌面開發

我們知道,web應用是需要跑在瀏覽器中的。當用户需要使用你的服務時,他需要點開瀏覽器,然後輸入你的網址。

你有沒有發現,瀏覽器才是你應用的入口,而不是一開始就能進入你的應用中。

有很長一段時間,互聯網大廠都在爭奪用户的入口,都希望能在用户的電腦上部署一個長期運行的軟件,這樣就能在任何時候使自己的服務直接觸達用户

那能不能繞開瀏覽器呢?

,繞開瀏覽器的辦法只有一個,就是自己提供本地應用

比如,移動端APP就已經達到了這個效果,用户打開手機,使用的基本上就是那麼幾個固定的App,不會再去從手機裏找到瀏覽器後才能進入到你的應用。

其實,PC 端很多重要領域也已經被本地應用佔領了,比如,遊戲、郵件客户端、文字排版工具、繪圖工具等,只是 PC 端的本地應用顯然沒有移動端的本地應用豐富多彩

這並不是因為 PC 端沒落了,相較而言,PC 端在便攜性方面確實不如移動端,但不得不説 PC 端擁有它自己獨特的優勢,比如,更大的可視區域更快捷多樣的輸入輸出接口更強勁的性能支持硬件等。

按照現在的發展趨勢,PC 端正在向着更專業、更精細的方向發展。而移動端應用則更偏向社交和娛樂屬性

目前,像谷歌等一些大型互聯網公司開始重新重視桌面應用的重要性,相繼推出了各自的桌面應用框架,比如,GitHub 的 Electron,谷歌的 Flutter-Desktop等等,這些桌面端軟件開發框架都是近幾年才推出的,由此可見桌面應用開發領域將再次繁榮。

因此,掌握 PC 端開發的技能是非常有必要、非常有前景的。

在眾多桌面端開發框架中,作為前端工程師,我推薦Electron

Electron 開發桌面應用

官網對Electron的介紹:

Electron是一個使用 JavaScript、HTML 和 CSS 構建桌面應用程序的框架。 嵌入 Chromium 和 Node.js 到 二進制的 Electron 允許您保持一個 JavaScript 代碼代碼庫並創建 在Windows上運行的跨平台應用 macOS和Linux——不需要本地開發 經驗。

可以看到,Electron 內部封裝了 Chromium 瀏覽器核心和 Nodejs,同時為開發者暴露出了很多必要的操作系統 API,有了它,前端開發者就可以使用HTML, CSS, JavaScript來開發桌面應用了。

使用Electron開發桌面應用有如下幾個優勢:

  • 容易上手,開發效率高

當前,前端技術是如今軟件開發領域應用最廣泛的技術之一,且入門門檻非常低、生態繁榮、社區活躍,相對於使用 C/C++ 開發桌面軟件來説,使用 Electron 開發桌面應用更容易上手,且開發效率更高。

除此之外,Electron 可以使用幾乎所有的 Web 前端生態領域及 Node.js 生態領域的組件和技術方案。目前發佈到 npmjs.com平台上的模塊已經超過 100 萬個,覆蓋領域廣、優秀模塊繁多且使用非常簡單方便。

  • 調用 C++ 擴展,提升運行效率

你可能會擔心前端技術執行效率會比 C/C++ 差,不可否認確實會有性能上的差距,但如果前端代碼寫得足夠優秀,是完全可以做到與 C++ 應用相媲美的用户體驗,最最經典的一個例子就是Visual Studio Code

再加上,Nodejs 本身也可以很方便地調用 C++ 擴展,Electron 應用內又包含 Node.js 環境,對於一些運行速度要求高的需求也可以使用 Node.js 的 C++ 擴展來完成。

  • 採用最新瀏覽器語法與標準

由於 Electron 內置了 Chromium 瀏覽器,該瀏覽器對各項前端標準都支持得非常好,甚至有些標準尚未通過,Chromium 瀏覽器就已經支持了,所以基於 Electron 開發應用不會遇到瀏覽器兼容性問題。你幾乎可以在 Electron 中使用所有 HTML5、CSS3 、ES6 標準中定義的 API。

以上這些就是我推薦使用 Electron 開發桌面應用的原因。

當然,Electron 也有其他競爭對手,比如 NW.js,但 NW.js 與 Electron 相比,在穩定性、周邊工具完善度、社區活躍程度上都相差非常大。

這兩個框架都與中國人有極深的淵源,2011 年左右,中國英特爾開源技術中心的王文睿(Roger Wang)希望能用 Node.js 來操作 WebKit,而創建了 node-webkit 項目,這就是 NW.js 的前身。英特爾公司大力支持了這個項目,不但允許王文睿分出一部分精力來做這個開源項目,還給了他招聘名額,允許他招聘其他工程師來一起完成這個項目。

2012 年,故事的另一個主角趙成(Cheng Zhao)加入到王文睿的小組,並對 node-webkit 項目做出了大量的改進。後來趙成離開了英特爾,幫助 GitHub 團隊嘗試把 node-webkit 應用到 Atom 編輯器上,但由於當時 node-webkit 還並不穩定,且 node-webkit 項目的走向也不再受趙成的控制了,這個嘗試最終以失敗告終。

但趙成和 GitHub 團隊並沒有放棄,而是着手開發另一個類似 node-webkit 的項目:Atom Shell,這個項目就是 Electron 的前身,趙成在這個項目上傾注了大量的心血,這也是這個項目後來廣受歡迎的關鍵因素之一,再後來 GitHub 把這個項目開源出來,最終更名為 Electron。