[譯] 2019 年值得學習的頂級 JavaScript 框架與主題

圖:Jon Glittenberg Happy New Year 2019 (CC BY 2.0)javascript

又到了一年的這個時候:JavaScript 年度技術生態回顧。咱們的目標是找出最有職業投資回報率的主題和技術。在實際生產中你們都在用什麼呢?如今的趨勢是什麼樣的呢?咱們不會試圖去找出最佳,可是會使用數據驅動的方法,來幫助你們着重關注那些能幫助你在求職面試中回答「你知道 ____ 嗎?」的主題與技術。html

咱們不會去分析哪些是最快的,哪一個有最好的代碼質量。咱們會假設它們都是速度惡魔(speed demons),而且它們都很棒,足以完成你的工做。而主要的關注點在於:什麼是被大規模使用的?前端

組件框架

咱們要關注的大問題是當前組件框架的情況。咱們會主要關注三巨頭:React、Angular 和 Vue.js,主要由於在工做中,它們的使用遠遠超過了其餘的框架。java

去年,我注意到了 Vue.js 的(使用量)增加並提到了它可能在 2018 年遇上 Angular。事實上它沒有發生,但 Vue.js 的增加仍然很是快。我也預測了將 React 用戶轉化爲其餘框架用戶將會更加困難,由於 React 比 Angular 有更高的用戶滿意度 — React 用戶並不會有充分的理由去切換框架。與我對 2018年的預期一致。React 在 2018 年緊緊佔據了頭把交椅。react

但有趣的是,三個框架每一年仍持續着指數級的增加。android

預測:React 在 2019 將繼續領先

在咱們關注 React 的第三年,它 相比 Angular 仍有更高的滿意度,並且對於挑戰者,它不會放棄任何優點。目前看來我認爲在 2019 沒有可以挑戰它地位的框架。除非有超級強大的東西出現而且擾亂了 React(社區),React 將會在 2019 年末繼續領先。ios

說到 React,它一直在變得更好。最新的 React hooks API 取代了我從 0.14 版本開始就幾乎不能忍受的 class API。(class API 仍然能夠繼續使用,可是 hooks API 真的 更好)。React 的 API 改進如更好的代碼分割和併發渲染(詳情)將使它在 2019 年更難被戰勝。不用懷疑,React 如今是目前對開發者最友好的前端框架。我沒有理由不推薦它。git

數據來源

咱們會關注一些關鍵點來評估在(這些框架)實際生產中的興趣和使用狀況:github

  1. Google 搜索的趨勢。這並非我最喜歡的指標,可是它是個不錯的宏觀視角。
  2. 包下載量。這裏的目的是獲取使用框架的真實用戶(數據)。
  3. Indeed.com 上的招聘廣告。用和去年相同的方法論來保持結果的一致性。

Google 搜索趨勢

框架搜索趨勢:2014 年 1 月 — 2018 年 12 月面試

在搜索趨勢上,React 在 2018 年 1 月超越了 Angular,而且在這一全年剩餘的時間裏保持了領先的位置。Vue.js 在圖裏保持了一個可見的位置,可是仍然是搜索趨勢中的一個小因子。對比:去年的趨勢圖:

框架搜索趨勢:2014 年 1 月 — 2017 年 12 月

包下載量

包下載量是一個衡量實際使用狀況的公平指標,由於開發者在工做是會頻繁地下載那些他們須要的包。

睿智的讀者會發現有時候他們從他們公司內部源的下載包,對於這種狀況,個人回答是:「那確實會發生 — 對於這三個框架來講。」它們均可以在企業中立足,而我對這個大規模的數據的平均能力有信心。

React 每個月下載量:2014–2018

Angular 每個月下載量:2014–2018

Vue 每個月下載量:2014–2018

讓咱們看一下下載份額的快速可視化比較:

「但你忘記了 Angular 1.0!它在企業中仍然很重要。」

不,我沒有。Angular 1.0 仍然在企業中被普遍使用,這和 Windows XP 在企業中仍被普遍使用是類似的。這個數量絕對足夠引發注意,可是新版本的 Angular 早已使 Angular 1.0 相形見絀,Angular 1.0 的重要性已經不如其餘的框架了。

爲何?由於整個軟件行業和 全部部門(包括企業) 的 JavaScript 的使用增加得很快,新的框架會使舊的框架變得很眇小,即便它是 永不升級 的遺產應用。

證據就是,看看這些下載量統計圖。2018 年單年的下載量就比以前幾年的 總和 都要多。

招聘廣告投放數

Indeed.com 集合了許多招聘部門的招聘廣告。每一年 咱們都會統計提到每一個框架的招聘廣告¹ 來給你們提供關於企業在招什麼樣的人的更好的觀點。這是今年的形勢:

2018 年 12 月有關每一個框架的招聘廣告統計

  • React:24,640
  • Angular:19,032
  • jQuery:14,272
  • Vue:2,816
  • Ember(不在圖中):2,397

再說一次,今年投放的職位總數比去年要多。我把 Ember 剔除了,由於它顯然沒有像其餘框架同樣按比例增加。我不推薦爲了將來找工做而去學它。jQuery 和 Ember 相關的崗位並無多大的變化,但其餘的崗位都有很大的增加。

使人感激的是,加入軟件工程領域的新人在 2018 年也增加了不少,但這也意味着咱們也須要持續聘用並培訓初級開發者(意味着咱們須要 合格的高級開發者來指導他們),不然咱們將沒法跟上爆炸性的就業增加。做爲對比,這裏有去年的圖表:

平均薪資在 2018 年也攀升了,從每一年 $110k 到每一年 $111k。有傳聞說,薪資列表落後於新員工的預期,而且若是招聘經理不去適應開發者的市場,不給出更多的加薪,他們會更難僱傭和留住開發者。留人和物色人才在 2018 仍然會是一個巨大的問題,由於僱員們會跳槽到別處有更高工資的職位。

  1. 方法論:職位搜索是在 Indeed.com 上進行的。爲了去除誤報,我把它們和搜索詞 「software」 組合在一塊兒來增強相關度,而後乘以 1.5(粗略地說,就是使用關鍵詞 「software」 和不用這個關鍵詞搜索到的編程崗位列表的區別)。全部 SERPS 都按照日期排序並檢查相關性。結果數據並非 100% 準確的,但它們對於在本文中使用的相對近似值足夠好了。

JavaScript 基礎

我每一年都在說:關注基礎。今年你會獲得更多的幫助。全部的軟件開發都是這樣組合的過程:把複雜的問題拆解成多個小問題,並將那些小問題組合起來,組成你的應用。

但當我問 JavaScript 的面試者那些軟件工程最基本的問題,如「什麼是函數組合」和「什麼是對象組合」,他們幾乎老是回答不出這些問題,儘管他們天天都在作這些事。

我一直認爲這是一個須要解決的嚴重問題,因此我寫了這個主題:「Composing Software」

若是你在 2019 年沒有要學的了,那麼就去學組合式編程吧。

TypeScript

TypeScript 在 2018 年持續增加,而且它會被持續高估,由於 類型安全並非什麼大問題(並無很好地減小產品的 bug 密度),而且在 JavaScript 中,類型推斷 不須要 TypeScript 的幫助也能夠作得很好。你甚至能夠在使用 Visual Studio Code 時,經過 TypeScript 引擎在普通的 JavaScript 中進行類型推斷。或者爲你喜好的編輯器安裝 Tern.js 插件。

對於大部分高階函數而言,TypeScript 會繼續一敗塗地。大概是由於我不知道怎樣正確使用它(在與它平常相伴多年後 — 在這種狀況下,他們真的須要提升可用性或者文檔,或者二者都要),但我仍然不知道在 TypeScript 中如何定義 map 操做的類型,而它彷佛在 transducer 中很清晰明瞭。捕獲錯誤常常失敗,而且常常報明明不是錯誤的錯誤。

可能對於支持我所認爲的軟件,它僅僅是不夠靈活或者功能不夠完善。但我仍然對有一天它會加入咱們須要的功能抱有但願,由於它的缺點在我嘗試在真實項目中使用它時令我失望,但我仍然喜歡它在有用的時候可以合適地(而且可選擇地)定義類型的潛力。

我目前的評價:很是酷的選擇,有限的使用場景,但被高估了,笨拙,而且在大型生產應用中的投資回報率很低。這很是諷刺,由於 TypeScript 自稱是 「JavaScript 的超集」。可能他們要加入一個詞:「笨拙的 JavaScript 超集」。

在 JavaScript 裏咱們須要的是一個更靠近 Haskell 而不是 Java 類型系統。

其餘值得學習的 JavaScript 技術

加密行業的崛起

去年我預測區塊鏈和金融會計將會成爲 2018 年值得觀察的重要技術。這個預測是正確的。2017 - 2018 的一個主要的主題是加密行業的崛起和構建價值網絡的基礎。記住這個階段。你很快將會屢次聽到它。

若是你和我同樣自從 P2P 爆炸性增加後關注那些去中心化應用,這已經持續好久了。因爲比特幣點燃了導火索,並展現了去中心化應用經過加密貨幣自我維持的方式,這種爆炸性增加是不可阻擋的了。

比特幣在幾年內增加了若干個量級。你可能據說過 2018 年是「加密寒冬」,而且有「加密行業處於掙扎中」的想法。這徹底是無稽之談。實際的狀況是,在 2017 年末,比特幣以史詩般的指數增加曲線增加到以前的 10 倍,但市場有所回落,這種回落會發生在每次比特幣增加到以前的 10 倍。

比特幣 10 倍拐點

在這個圖表中,每一個箭頭始於 10 倍點,指向價格修正後的最低點。

加密貨幣的 ICO(首次代幣發行)的資金募集在 2018 年初達到頂峯。2017-2018 的資金泡沫帶來了生態系統中大量新的職位空缺,在 2018 年 1 月達到了頂峯,有超過 10k 的職位空缺。這種趨勢已經回落到大概 2400 個職位空缺了(根究 Indeed.com 的數據),可是咱們如今仍處於(這個行業的)早期階段,這場派對纔剛開始。

關於迅猛增加的加密行業有不少能夠討論的地方,可是這能夠另寫一篇博文了。若是你感興趣的話,能夠閱讀:「Blockchain Platforms and Tech to Watch in 2019」

其餘值得觀察的技術

和去年預測的同樣,這些技術在 2018 持續爆炸性增加:

人工智能/機器學習 正如火如荼,在 2018 年底有 30k 的職位空缺。deep fakes,使人難以置信的生成藝術,來自 Adobe 這樣的公司的研究團隊研發的使人驚訝的視頻編輯能力 — 歷來沒有更激動人心的去探索人工智能時刻。

漸進式 Web 應用(PWA) 迅速成爲了構建現代應用的方式 — 增長的新特性與有 Google、Apple、Microsoft、Amazon 等公司的支持。令我難以置信的是,我將手機上的 PWA 視爲理所固然。例如,我在個人手機上再也不須要安裝 Twitter 的原生應用。我僅僅使用 Twitter 的 PWA 來替代它。

AR(加強現實)、VR(虛擬現實)、MR(混合現實)像戰神金剛同樣合體成 XR(eXtended Realty)。將來的全時 XR 沉浸即將到來。我預測在 5-10 年內會出現大規模的消費級 XR 眼鏡產品。隱形眼鏡會在 20 年內推出。這個行業在 2018 年有數以千計的新職位空缺,而且在 2019 仍會持續爆炸性增加。

機器人、無人機和自動駕駛汽車:在 2018 年底,自動飛行的無人機已經被研發出來了,自動機器人仍在持續優化中,而且有更多自動駕駛汽車上路了。2019 年,以及將來的 20 年,這些技術會持續增加並重塑咱們周圍的世界。

量子計算 和預期的同樣在 2018 發展得極好,而且和預期的同樣,它仍然沒有成爲主流。事實上,個人預測「它會在 2019 或者在真正中斷以前成爲主流」可能太樂觀了。

加密領域的研究者已經集中更多的注意力在量子安全加密算法上(量子計算會打破今天的計算成本昂貴的假設,而加密正是依賴於這些成本昂貴的計算),但儘管在 2018 年不斷涌現出有趣的研究進展,最近有一篇報道 換了個角度看待這個問題

「在 2000 到 2017 年間,量子計算已經 11 次上了 Gartner 的 hype list,每次都在 hype cycle 的最先階段就被列出,而且每次都說已經距離咱們有十年之遙。」

這讓我想起了早期人工智能的努力,它在 1950 年代開始升溫,在 1980 和 1990 年代有了有限的可是有趣的成果,可是在 2010 年左右的成果纔開始變得使人興奮。


咱們正在構建將來的名人數字藏品:cryptobling


Eric Elliott「編寫 JavaScript 應用」(O’Reilly)以及「跟着 Eric Elliott 學 Javascript」 兩書的做者。他爲許多公司和組織做過貢獻,例如 Adobe SystemsZumba FitnessThe Wall Street JournalESPNBBC 等,也是不少機構的頂級藝術家,包括但不限於 UsherFrank Ocean 以及 Metallica

大多數時間,他都在 San Francisco Bay Area,同這世上最美麗的女子在一塊兒。

感謝 JS_Cheerleader

若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索