[譯] 2018 要學習的優秀 JavaScript 庫與知識

Alex Proimos—紐約公共圖書館自修室 (CC BY 2.0)javascript

去年,我寫了一篇關於 2017 須要學習的技術 的文章。今年有一些驚喜。前端

咱們致力於回答 「在你投資學習的時候,哪些最高效?」 的問題vue

JavaScript 有最多的包,取得壓倒性勝利。java

首先,軟件吞噬了世界,web 吞噬了軟件,同時 JavaScript 吞噬了 web。而在 2018 年,React 正在吞噬 JavaScript。node

2018: React 之年

React 在 2017 年贏得了人氣之戰。react

從 Google 趨勢能夠看出,仍是有不少開發者基於 Angular 開發:android

可是 React 持續的贏得用戶滿意度。它迅速增加並遠遠拋開 Angular (以及其餘) 框架。webpack

Vue.js 呢? 我據說它很火

每一個人都喜歡口頭上談及相關的替代選項,好比 Vue.js。這是我去年說的:ios

Vue.js 有不少的 GitHub star 和下載量。若是狀況繼續發展的話,它在 2017 年將會表現的很好,但我不認爲它會在下一年裏替換 Angular 或者 React。因此在你學習 React 或者 Angular 以後再學習它吧。git

Vue.js 在 2017 年表現出色,贏得了不少新聞頭條和人們的興趣。像我所預測的那樣,它沒有遇上 React, 同時我也確定的說在 2018 年也不會發生。即使如此,它可能在 2018 年超過 Angular:

Vue.js 下載量/月

如你所見, Vue.js 正在遇上 Angular 的下載量:

angular/core 下載量/月

可是 React 有很強的領先趨勢和與之相同的增加率:

React 下載量/月

Vue.js 比 React 增加的更快,那與 2017 年 React 和 Angular 的對比有什麼不一樣呢?

在 2016 年底,JavaScript 世界準備好迎接新的框架了。Angular 的用戶很是的不滿,React 的用戶則與之相反,許多人想學習 React,不多人願意學習 Angular。在 2017 年年尾,Angular 2 以後的用戶滿意度仍是不到一半,只有 49%。

React 和 Vue.js 則是徹底不一樣的情節 React 的用戶滿意度更高 (93% 對比 90%)。2017 年早期,從 React 轉向 Vue 的最大的刺激是 React 的開源許可證的問題。Facebook 聽取了用戶的建議後來更改了協議。

在這一階段,我看不到任何跡象可讓市場從 React 切換到其餘的。Vue.js 從 React 手中奪取用戶要比從 jQuery 和 Angular 那裏難的多。

從 Angular 和 jQuery 那裏奪取用戶有不少空間,可是從 React 那裏獲取用戶來得到持續的增加將會很快碰到瓶頸。

我預測 Vue.js 這種快速的增加只會持續一到兩年,它會在頂部與 React 進行激烈的競爭,而後會停在第二位,除非有大的改變能夠打破這個平衡。

職位

jQuery 涼了。

在職位列表中, React 徹底取代了 jQuery 以前的位置——這是十年來第一個超越 jQuery 的庫¹。咱們看到一個時代的終結。

React 取代了十年來 jQuery 第一的位置 (來源: Indeed.com)

對比一下去年的圖:

jQuery 2016 年是這樣的

有趣的點在於其餘庫的增加值大於 jQuery 滑落的值。總的來講,庫相關的職位在去年增加了 10k 或更多。

在職位的增長下,咱們還看到平均工資的增加$110k 對比 2016 年的 $93k。通貨膨脹同期保持在2%如下,這也不會過多的影響這一爆炸式增加。

顯然,在 2018 還有是賣方市場。

1. 方法: 職位的搜索在 Indeed.com 完成。爲了加強數據的可靠性,我成對的搜索 「軟件」 相關的關鍵字擴大相關性,而後乘以大約 1.5 (粗糙的區分那些編程工做列表使用 「軟件」 關鍵字和不使用的)。全部相關的都按日期排序記錄相關性,其結果不必定 100% 準確,可是已經足夠用來在此文中表示粗略的度。

框架推薦

在看了今年的數據以後,我強烈用最普遍使用的 React 來開發應用,包括移動端應用(PWAs, React Native),web 應用,大部分的生產力工具,以及桌面媒體應用(Electron)。

某些明顯的狀況下,其餘的可能更爲適用好:輕量的營銷頁面(徹底不須要框架),3D 遊戲,AR/VR。對於 3D 的內容,看看 Unity, Unreal, 或者 PlayCanvas。即使如此,React 也能夠做爲 3D 內容的 UI 庫。

我強烈不建議轉向其餘能夠備選的前端框架。這並非說它們很差,只是它們不是市場上 React 有力的競爭者。記住,這個列表是關於投資回報率,而不是哪個技術是最棒的。

爲何對 React 這麼感興趣?

瀏覽 React 的職位列表,我注意到不少本不該該屬於前端工做的有趣的趨勢:

  • React Native (看起來, 這些需求總量比 Vue.js 的還多)
  • React IoT
  • React AR/VR (Oculus Rift 主導需求市場)
  • React 對那些你歷來沒據說的模糊計算

React 已經脫離了它 web 的土壤

靈活性是 React 最大的賣點。不像其餘框架,採用 React 並不意味着關注它的數據模型,甚至瀏覽器和 DOM。事實上,我發現很多 React 的工做需求徹底沒有提到 JavaScript。

React 提供了基於其標準的豐富的充滿活力的生態系統,這些從 jQuery 統治 web 以來歷來沒有看到過。

問題再也不是「哪個框架?」 問題是 「什麼技術能夠更好的搭配 React?」

沒有任何事物能夠在 2018 改變 React(也許 2019 也是)。你很安全。JavaScript 疲勞漸漸穩定了。咱們有了一個偉大的構造應用的框架,同時有着相關的優秀的生態系統。

你應該學習哪些話題?

像去年同樣,你不能錯誤的關注一些要點,可是你應該更加劇視 React 應用的函數式編程。

React 有兩點優秀之處:

  • 肯定性的視圖渲染
  • 將視圖層從 DOM 操做中抽象出來

肯定性經過使用純函數構建應用來實現,這本質上也是函數式編程的定義。

考慮這一點, 這是一些你須要學習的內容:

庫和工具

這裏是一些我發現的最有用的庫和工具:

  • React
  • Redux
  • Redux-Saga 管理異步 IO 分離反作用
  • Next.js—Node 和 Express 的服務端渲染, 自動的分離打包, styled-jsx
  • Material UI
  • Storybook
  • Cheerio 用來作 React 組件的單元測試(相比 Enzyme 我更喜歡它)
  • Lodash (我更傾向於 lodash/fp)。只導入須要的包避免增大打包體積。
  • Babel: 編譯 ES6 使它在更老的瀏覽器上運行
  • Webpack: 最流行 JavaScript 打包工具,向 kit/boilerplate找一些簡單的樣例來快速的開始。
  • ESLint: 提前檢測語法錯誤和樣式問題,在 code review 和測試驅動開發以外最好的能夠減小你代碼裏錯誤的工具。
  • Ramda—主要是爲了 lenses 和 transducers.
  • Node & Express
  • RxJS: 讓 JavaScript 可觀察,最近我一直在使用 transducers,記着使用 patch imports 來減少包體積。

TypeScript2017 年表現不錯, 但我認爲它增長應用的複雜度的弊端大於它的幫助,它的主要缺點是過度依賴類型標註而不是類型推論,同時對高階函數的類型有沒法形容的扭曲,我作了一成天的試用,這些狀況仍然存在:「靜態類型之祕」「你也許不須要 JavaScript」。Flow 跟 TypeScript 有相同的問題同時開發者工具也不如 TypeScript 的棒。

2018 技術展望

全部的這些都是 2018 研究與開發領域真實的工做:

  • Progressive Web Apps (PWAs)
  • 區塊鏈與金融科技
  • 醫療科技
  • AR/VR—Hololens, Meta, 和 ODG 如今能夠出貨了。 ODG R-9 原本預計 2017 發售可是頗有可能放在 2018。MagicLeap 承諾 2018 發佈。AR 將會比過去手機更加改變人們的體驗。
  • 3D 打印
  • AI
  • 無人駕駛

量子計算也將改變世界,可是也許在 2019 或者更晚改變纔會開始。目前有在網上工做的量子計算機,可是他們還作的不是不少。如今對於大多數開發者來講開始試驗性生產還太早。微軟最近發佈了它的量子計算編程語言 Q#IBMGoogle 也繼續大量投資本身的量子云計算市場。

若是你想學習量子計算,你也許須要學習 線性代數,同時也有對於量子計算也有一些基於 lambda 演算 的函數式探索。

頗有可能,像咱們看到的 AI, 雲 API 將會被開發出來讓有不一樣數學背景的人來更好的利用好量子計算的能力。

須要爲你的團隊教授 React?

DevAnywhere 提供一些 React 的線上教程,和一對一的關於 React 中函數式編程及軟件構建原理的指導。

devanywhere.io/


Eric Elliott is the author of 「Programming JavaScript Applications」 (O’Reilly), and cofounder of DevAnywhere.io. He has contributed to software experiences for Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC, and top recording artists including Usher, Frank Ocean, Metallica, and many more.

He works anywhere he wants with the most beautiful woman in the world.


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

相關文章
相關標籤/搜索