- 原文地址:Top JavaScript Frameworks and Topics to Learn in 2019
- 原文作者:Eric Elliott
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
- 譯者:ElizurHz
- 校對者:KarthusLorin, wuzhengyan2015
圖:Jon Glittenberg Happy New Year 2019 (CC BY 2.0)
又到了一年的這個時候:JavaScript 年度技術生態回顧。我們的目標是找出最有職業投資回報率的主題和技術。在實際生產中大家都在用什麼呢?現在的趨勢是什麼樣的呢?我們不會試圖去找出最佳,但是會使用資料驅動的方法,來幫助大家著重關注那些能幫助你在求職面試中回答“你知道 ____ 嗎?”的主題與技術。
我們不會去分析哪些是最快的,哪個有最好的程式碼質量。我們會假設它們都是速度惡魔(speed demons),並且它們都很棒,足以完成你的工作。而主要的關注點在於:什麼是被大規模使用的?
元件框架
我們要關注的大問題是當前元件框架的狀況。我們會主要關注三巨頭:React、Angular 和 Vue.js,主要因為在工作中,它們的使用遠遠超過了其他的框架。
去年,我注意到了 Vue.js 的(使用量)增長並提到了它可能在 2018 年趕上 Angular。事實上它沒有發生,但 Vue.js 的增長仍然非常快。我也預測了將 React 使用者轉化為其他框架使用者將會更加困難,因為 React 比 Angular 有更高的使用者滿意度 — React 使用者並不會有充分的理由去切換框架。與我對 2018年的預期一致。React 在 2018 年牢牢佔據了頭把交椅。
但有趣的是,三個框架每年仍持續著指數級的增長。
預測:React 在 2019 將繼續領先
在我們關注 React 的第三年,它 相比 Angular 仍有更高的滿意度,而且對於挑戰者,它不會放棄任何優勢。目前看來我認為在 2019 沒有能夠挑戰它地位的框架。除非有超級強大的東西出現並且擾亂了 React(社群),React 將會在 2019 年底繼續領先。
說到 React,它一直在變得更好。最新的 React hooks API 取代了我從 0.14 版本開始就幾乎不能忍受的 class
API。(class
API 仍然可以繼續使用,但是 hooks API 真的 更好)。React 的 API 改進如更好的程式碼分割和併發渲染(詳情)將使它在 2019 年更難被打敗。不用懷疑,React 現在是目前對開發者最友好的前端框架。我沒有理由不推薦它。
資料來源
我們會關注一些關鍵點來評估在(這些框架)實際生產中的興趣和使用情況:
- Google 搜尋的趨勢。這並不是我最喜歡的指標,但是它是個不錯的巨集觀視角。
- 包下載量。這裡的目的是獲取使用框架的真實使用者(資料)。
- 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 仍然會是一個巨大的問題,因為僱員們會跳槽到別處有更高工資的職位。
- 方法論:職位搜尋是在 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 技術
- 用於請求服務端的 GraphQL
- 用於管理應用狀態的 Redux
- 用於獨立管理副作用的 redux-saga
- react-feature-toggles 來簡化持續交付和測試
- RITEway 來編寫美觀、可閱讀的單元測試
加密行業的崛起
去年我預測區塊鏈和金融會計將會成為 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 仍會持續爆炸性增長。
- YouTube 視訊連結:youtu.be/JaiLJSyKQHk
機器人、無人機和自動駕駛汽車:在 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 Systems、Zumba Fitness、The Wall Street Journal、ESPN 和 BBC 等,也是很多機構的頂級藝術家,包括但不限於 Usher、Frank Ocean 以及 Metallica。
大多數時間,他都在 San Francisco Bay Area,同這世上最美麗的女子在一起。
感謝 JS_Cheerleader。
如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。