2018年最值得關注的JavaScript趨勢
JavaScript 滲透的范圍越來越廣,它能做的事情已經遠不止前端開發而已。不久前 stateofjs.com 剛剛發布了 2017 JavaScript 現狀報告,現在 Ryan Chartrand 非常應景地推出了2018 年的 JavaScript 發展趨勢,把這兩份文章一起結合來看,相信作為 JS 開發者的你一定不再迷茫。
去年,有 50000 人對 JavaScript 的上升趨勢感到好奇......
那么好吧,我的開發者同胞們,現在我們再來看看 2018 年怎樣。
如果你 2017 年一整年都與世隔絕或者忙于項目而自顧不暇的話,這篇文章就是給你準備的。
2017 年發生的很多事情正在為 2018 年的許多行動和創新做好準備。你還可以把本文用作規劃個人成長的指南,來推出更具創新性的項目。
React vs. Vue.js
我們開門見山,直接上好東西吧:認為 Vue 可能會成為 React 的一大競爭敵手的人不是很多,但是今年想要無視 Vue 是不可能的,在開發者的炒作方面甚至令 Angular 黯然失色。
展望 2018 年的時候,我們即將迎來 2 年的激烈競爭,而對 Vue 的炒作會非常多。
React 有著全球最富有公司之一的財政支持,更不用說他們還有極其有才的維護人員。
但是 Vue 做了下面這些讓開發者真心高興的事:
-
Vue 輕量,容易學習,有著令人難以置信的工具,有很棒的狀態管理和路由內置(!)等等。
Vue 的社區當然還沒有 React 那么大,但從核心團隊是否有很好的使者并且是否傾聽客戶來看,這個社區正在壯大。
談到取悅開發者,不要忘了 Facebook 今年在 BSD+Patents 的收錢事件中遭遇的史詩般的失敗,這惹惱了不少的開發者。
我們現在其實已經發展到你一樣可以通過 Vue 啟動任何項目來讓自己生活變得簡單的程度,這是他們的核心團隊取得的一項令人印象深刻的成就。
這里有一篇文章對 React、Vue 和 Angular 進行了很好的對比。
最終可能會發展成什么樣子?Facebook 會做它最擅長的東西:抄襲創新者然后世界繼續使用 React。
如果你是一位拒絕學習 React 的 Angular 開發者,隨著 Angular 的機會日漸消亡,Vue 應該迅速成為你職業生涯更好的選項(而且 Vue 的部分語法跟 Angular 類似)。
每一位 JS 開發者都仍然應該考慮學習 Vue.js,因為它已經制造了足夠大的水花,現在我們開始看到對 Vue.js 開發者的需求出現,這意味著至少在短期內你能夠為自己創造一些價值。
Next.js
然后就是 Next.js,我們稱之為“React 的保險”。
盡管 Facebook 從未在這場游戲中領先過,并且在創新的勢頭上無法與 Vue 匹敵,但在工具使用、代碼切割、路由以及狀態管理方面,React 加上 Next.js 能讓你在體驗上跟 Vue 接近許多,此外還能讓你獲得大規模的 React 生態體系和支持。
Next 對于用 React 開發的 server-side 為主的應用也特別有用,二者在應用已經日益成為趨勢。
此外,再加上 Now.js(由同一支團隊開發)你就能得到超級快速的部署 React 應用的方式。
隨著 Vue 與 React 之爭的延續,預計會看到越來越多 Next 與 React 的雙劍合璧,這會讓 React 陣營的每個人都感覺舒服一點。
Angular
盡管 Angular 越來越難以取悅開發者,它仍將是 2018 年廣受采用的框架之一。
許多公司采用了 Angular 1.0,隨著 2018-19 年間他們尋求移植到更好的框架,這些會關注 React 或者 Vue 會不會是 Angular 2 更好的替代。
Angular 剩下的擁護者已經表態說 Angular 會成為企業選擇的 JS 框架,但這一斷言尚有待證實,而且在 2018 年未必能得到證實。
這里有你需要了解的 2017 年有關 Angular 的一切。
Reason
Facebook 生產使用的一切永遠都值得關注。
Facebook 現在用 Reason 來開發 web 版的 Facebook Messenger 以及其他項目(Whatsapp、Instagram、Ads 等)。
2017 年,他們還推出了 reason-react,將 reason 跟 Reacy 綁定在一起,這樣你就可以寫出可編譯成慣用 ReactJS 的 Reason 代碼。
所以你可想象一下,不需要安裝 Babel(+許多插件)、Flow 等,只需要 OCaml + Reason(現在已經支持 React 綁定)即可的強大。這是一個有待開發的一大趨勢。
在 JS 領域 Reason 今年獲得的注意力要比大部分的編譯成 js 型語言多很多,所以這絕對是 2018 年值得繼續關注的趨勢之一。
GraphQL
GraphQL 是 API 的查詢語言(可以看成是 REST 的現代版)。
GraphQL 沒有辜負 2017 年的炒作,像 Yelp、Spotify、Github、沃爾瑪、《紐約時報》等主流公司都在采用 GraphQL,而且現在還有了基于 GraphQL 的 API。
其中一些 API 甚至是專門支持 GraphQL 的,甚至連 REST 選項都沒有。簡而言之:創新公司正在押注到 GraphQL 身上。RESTful API 當然還遠沒到滅亡的地步,但再次地,看看初創企業的使用趨勢就知道 GraphQL 是個熱門選項。
另一方面,像 Falcor 這樣的替代者幾乎連討論的聲音都沒有了。
如果你想在創新公司找份工作的話,現在絕對是開始學習 GraphQL 的時候。
Redux、Relay Modern 以及 Apollo
Redux 是一直很火的 Dan Abramov/Andrew Clark 項目,后來有迅速成為 React 狀態管理和數據抓取的首選解決方案。
但 GraphQL 改變了現狀,主要是在數據抓取方面。
我們現在有了 Relay Modern (Facebook 開發)和 Apollo,讓你可以比 Redux 更高效地抓取并傳遞 GraphQL 數據到 React 應用的 GraphQL 客戶端框架。
但就像一位開發者指出那樣,Relay/Apollo/Redux:
這些框架和它們的好處未必需要是互斥的。實際上,這幾個一起使用可以提供很好的關注分離,這是 web 開發來說可太重要了。
這意味著你仍然可以跟 Relay 一起用 Redux,Redux 用于本地狀態管理以及一些復雜的非服務器狀態,然后由 Relay 來抓取。
但是社區對簡化這個的東西(目前為止唯一的答案是 Vue.js 或者 Cashay)比較焦慮。
Storybook
哇哦,2017 年 Storybook 真的是火了。
Storybook 是一個定義、開發和測試 UI 組件的環境。
它從年初的幾乎一潭死水變成年中的大規模流行,這要感謝社區的巨大努力。這是一個極其激勵人的故事,展現出了開源工作應該如何演進,它的故事真的值得一讀。
Storybook 太有用了(而且用起來也很有趣),你可以單獨地開放和測試 UI。它就像一本實時的 UI 設計指南,能夠為開發者提供真正的價值。
你可能已經碰到過用 Storybook 來設計的開源項目了,但如果想自己看看它是怎么用的話,那就看看用 Storybook 設計的 Airbnb 的日期選擇器。
作為開發者如果你想在 2018 年脫穎而出,那就在面試的時候用 Storybook 展示你的最新項目。
額外提示:建議你也看看 react-bluekit,這是 Storybook 的替代,Netflix 的工程團隊用來設計他們的組件庫。
Prettier
就像它的名字一樣,Prettier 是一個代碼格式化程序,可以讓你的代碼可讀性更強,并且很好看。
foo (reallyLongArg (), omgSoManyParameters (), IShouldRefactorThis (), isThereSeriouslyAnotherOne ());
變成:
foo (
reallyLongArg (),
omgSoManyParameters (),
IShouldRefactorThis (),
isThereSeriouslyAnotherOne ()
);
這個東西在 GitHub 上面得到了 18000 顆星,開發者都很喜歡這個簡單又有價值的項目。
它還被用到了許多其他你熱愛的項目上,比如 Webpack、React、Next.js、Babel 等。
再次地,你可以成為一名 Go 開發者,這樣就不用安裝這個也能享受它的功能了。
Jest 和 Enzyme
說到 JavaScript 測試,Jest 無疑是領先的那個,而 Enzyme 則是很好的補充,尤其是在開發 React 應用的時候。
就像你在這里看到一樣,在下載方面 Jest 現在統治著 Jasmine。
Jest 的 Snapshots 功能在 2017 年真的起來了,使得處理測試的痛苦少量很多。你可以看看 React Conf 2017 的這次演講來了解它的一切。
由 Airbnb 工程團隊開發的 Enzyme 是一個測試 React 組件的 JavaScript 庫。自從 2016 年以來它已經在 GitHub 上面拿到了 12000 顆星。
Jest 和 Snapshots + Enzyme 超級簡單的 React 組件測試 API 形成了一個很強的測試組合,會在 2018 年不斷流行起來。
Webpack
Webpack 已經崛起為最流行的資產打包工具。Webpack 還經歷了不可思議的一年。
去年的這個時候,Webpack 還幾乎連文檔都沒有,大部分的開發者都不知道該怎么開始用它。
然后,到了今年年頭的時候,我寫了篇文章,說 Webpack 在 3 個月內就拿到了 15000 美元來支撐這個項目是如何的不可思議。而他們現在已經拿到了幾十萬美元的融資了。
Webpack 不僅為開源項目如何走向繁榮鋪好未來,而且這個項目一整年都維持了很旺盛的發展勢頭。
謝天謝地,Sean Larkin 還在領導著 Webpack,所以 Webpack 能夠取得下一個成就還沒有結束的跡象。
因為這該項目得到的支持如此之好(以及他們對社區的關心程度如此之高),所以 2018 年最好預測的趨勢就是它了。
Parcel
但每一個大規模的趨勢發展的同時,也會有不滿開發者隊伍的日益壯大。
Parcel,一個有競爭力的打包工具,也相當迅速地獲得了發展勢頭,目前它已經在 GitHub 上面攢到了 12000 顆星,開始直接威脅到 Webpack 的江湖地位。
Parcel 的賣點是別的打包工具都變得太龐大了,而 Parcel 的打包速度是 Webpack 的 2 倍(使用緩存的時候快 10 倍)。
它還針對 Webpack 多少有點令人困惑的配置設置,而 Parcel 卻不需要配置。
只用把你應用的入口點指給它,它就會把事情做對了。
盡管簡化配置和改善速度都是很好的改進,如果 2018 年上半年 Webpack 沒有抄這些改進的話我不會感到奇怪。
類似于 Vue 與 React 之爭,這個小家伙總是創新得更快,但要取決于大家伙會不會受到哪些創新的靈感啟發而改進自己的項目。
Gatsby
Gatsby 是 Kyle Mathews 開發的用于 React 的靜態網站生成器。
自從 Kyle 去年全職開發 Gatsby 以來,這個東西開始真正獲得發展勢頭。
React 網站本身就是用 Gatsby 開發的,再也有沒有比這更有力的證明了。
Gatsby 的全部關切都在于性能和給 React 提供盡可能快的 web 體驗。
他們網站的這張圖可以讓你了解到它大概是怎么工作的:
Gatsby 還利用先進的 web 技術替其他網頁預抓取資源,使得瀏覽起來快如閃電。
盡管 Gatsby 無論如何也不會統治這個行業,但卻是開發快速靜態網站非常出色的解決方案,會不斷流行下去。
要想更多了解 Gatsby,可參考這篇文章。
Babel
到現在 Babel 已經沒有介紹的必要了,大體上它仍將成為趨勢延續下去。
總而言之,2017 年對于 Babel 來說是個好年,它的精力主要都集中在 Babel 7 的開發上面(希望能在 2018 年初發布)。最重要的是,他們寫了一首歌:)
Babel 目前唯一的擔心是 Reason 日益成為主流。
但目前為止,Babel 還會在 2018 年延續強勁走勢。
Flow & Typescript
Typescript 和 Flow 都是 JavaScript 開發者很好的靜態類型選項,可以用來改進其代碼質量。
我們未必會在 2018 年看到誰摧毀誰的情形,所以它們還會一起共存,各自服務于不同的用例。
Facebook 開發的 Flow 是 React 開發者的優先選擇,因為它很容易跟 Babel 集成,在 React 項目中也使用得很普遍。
微軟開發的 TypeScript 在 Angular 2+ 開發者當中很流行,因為它是主要語言。
2018 年這兩個的發展可能會停滯,現在真正的問題是 Reason 今后會不會取代了這兩個。
Immutable.js
有一位 reddit 網友是這樣描述的,我很喜歡這種說法:
immutableJS 確保了大型團隊的開發者不會做一些愚蠢的事情。
簡而言之:Immutable.js,Facebook 的另一個項目,確保了狀態不會因為使用不可變對象而發生突變。
正如我們的 redditor 網友指出那樣,這對于大型團隊的開發者會極其有用,因為這些人經常會無意識地搞亂了狀態。
封裝在 Immutable.JS 對象里面的數據是永遠也不會變的。它總會返回一份新的拷貝。這跟 JavaScript 形成了羨慕對比,后者的一些操作不會改變你的數據(比方說一些數據方法,包括 map、filter、concat、forEach 等),但有的就會(Array 的 pop、push、splice 等)。
使用 Immutable.JS 有相當大的限制,但視你的需求不同,那些限制未必有關系。你可以通過這篇文章了解更多。
在 GitHub 上拿到了 20000 多顆星的 Immutable.js 已經在 2017 年崛起,預計還會延續到 2018 年,因為開發者正在花時間理解其中的概念和權衡。
Popmotion
Popmotion 是一個在 GitHub 上迅速贏得星星的 JavaScript 動畫庫。
可以把它想象為 Flash 預見了 jQuery。
現在,我意識到在一句話里面用這兩個詞對推銷這個日益流行的庫并沒有幫助。
但你對這個庫的研究越深,你就越會發現有一群人對 jQuery 和 Falsh 都有極深的抱怨,迫切需要讓情況變好一點。
而 Popmotion 真的體驗要好很多,在 web 動畫方面有了很多的創新。這無疑是 2018 年值得關注的趨勢之一。
你可以到這個網站一探究竟。
React Native & Electron
React Native 讓你可以針對移動設備開發 React 應用,而 Electronlets 則可以讓你針對桌面開發 JavaScript 應用。
這兩個框架在 2017 年均站穩了腳跟,也都是從 JavaScript 到原生應用很好的解決方案。
一些用 Electron 開發的知名 app 包括:Slack、Atom、Github Desktop 以及 Discord。
用 React Native 開發的流行應用包括:Facebook、Instagram、Airbnb 以及 UberEATS。
你現在還可以開發 Windows 版的 React Native 應用。
無論如何現在都是 JavaScript 開發者的好時光,考慮現在你開發桌面和移動 app 已經比過去容易多了。
額外提示:Web Assembly
有了這 4 個瀏覽器的支持后,Web Assembly 幾乎大功告成了。不過 2018 年稱之為趨勢還為時尚早,再過 12 個月再說吧。
但一定要密切關注它,因為現在每個人都盯住這個呢。
2018 學習材料
看完了前面介紹的所有這些趨勢后,下面我們給打擊推薦一些 2018 年的學習資料,不斷學習與時俱進你才能保持作為遠程開發者的競爭力并且發揮你的潛能:
-
勇敢去學 Vue.js 吧
-
每一位 React 開發者都應該學習 Next.js
-
開始學習 Reason(以及 Reason React)然后做個業余項目試試吧。
-
GraphQL 必須列入你的 2018 待辦事宜清單。
-
跟著 Relay Modern 學,這是 React+GraphQL 應用的數據抓取選項之一。
-
Storybook!Storybook!Storybook!
-
在一個項目上安裝 Prettier,讓你的代碼可讀性更強。
-
在一個 React 項目上學習使用 Jest 截屏及 Enzyme。
-
學習 Flow(React 開發者)或者 TypeScript(其他人)。
-
考慮用 Gatsby 把 Markdown 文本轉換成靜態頁面。
-
用 React Native 開發一個移動 app。
-
用 Electron 開發一個桌面 app。
-
玩一下 Popmotion 創作一個流暢的動畫。
-
把這個資源清單導入為 Todoist 項目。
責任編輯:售電衡衡
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網
-
新基建助推 數據中心建設將迎爆發期
2020-06-16數據中心,能源互聯網,電力新基建 -
泛在電力物聯網建設下看電網企業數據變現之路
2019-11-12泛在電力物聯網 -
泛在電力物聯網建設典型實踐案例
2019-10-15泛在電力物聯網案例
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業發展
-
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網 -
5G新基建助力智能電網發展
2020-06-125G,智能電網,配電網 -
從智能電網到智能城市