2020及新十年的優(yōu)秀JavaScript框架和話題,了解一下
如果你想找一份與JavaScript相關(guān)的好工作,或者是了解2020以及新十年間的重要技術(shù),請閱讀本文,保證干貨滿滿。
本文的重點不在于列舉那些“很好的”、很受人喜愛的或很受歡迎的技術(shù)棧和框架——而是說明哪些棧和框架最有助于在2020及新十年間找到好工作。
筆者將研究一些數(shù)據(jù),它們來源甚廣:
- 按主題搜索的谷歌搜索趨勢
- JS調(diào)查現(xiàn)狀
- Stack Overflow調(diào)查
- Npm下載
- 匯總職位公告
以上指標都不完美,但是就筆者目的而言,npm下載次數(shù)和職位公告最為重要,總的來看,這些指標清晰一致地描繪了JavaScript的技術(shù)前景及趨勢?;谶@些指標選擇框架來學(xué)習(xí)好嗎?這取決于目標是什么。
清晰的目標——為求職者學(xué)習(xí)投資回報率——讓這項任務(wù)比告知讀者何為優(yōu)秀要容易得多。雖然沒有什么東西可以實現(xiàn)所有目的,但是客觀地定義什么最有可能有助于達到某個特定的、具體的目標確實很容易。請看一些數(shù)據(jù)。
首先,了解JavaScript
過于擔(dān)心技術(shù)棧之前,先了解JavaScript以及怎樣用它生成軟件。若無法說明函數(shù)組合、對象組合和模塊是什么,請點擊此處。所有的軟件開發(fā)都是組合:將復(fù)雜的大問題分解成可用軟件構(gòu)造塊來解決的小問題:比如函數(shù)、對象、模塊等等。這些解決方案經(jīng)過組裝之后形成了應(yīng)用程序。新年伊始,請深入了解JavaScript和軟件組合。
2019,React占據(jù)主導(dǎo)地位,2020,其地位依舊

筆者喜歡npm下載指標,因為它可以很好地呈現(xiàn)框架的活躍使用情況*。由于用戶在本地計算機上運行npm install,因此通常處于工業(yè)框架的下載情況會極其活躍。
注意:此處不包括jQuery,很多jQuery項目是不適用npm的舊項目,因此無論如何它都會被嚴重低估。Svelte包括在內(nèi),目的是為了提供一些關(guān)于其在市場中相對位置的見解,并解釋它未出現(xiàn)在其余圖表之中的原因——尚未有足夠的數(shù)據(jù)支持Svelte在圖表中進行有意義的展示。比如,它還不是谷歌搜索趨勢中的可用主題。
匯總職位公告
該圖表統(tǒng)計了目前開放的職位公告,提到了某種特定的框架*。

2019年12月由UI框架制作的董事會工作清單
與去年相比,React增強了領(lǐng)先優(yōu)勢,而Angular和jQuery都喪失了和Vue競爭的優(yōu)勢。以下是一張餅狀圖,展示了各框架的相對就業(yè)市場份額情況:
頂級框架就業(yè)市場份額
JavaScript開發(fā)人員平均工資于2019年再次上漲,從原來的每年11.1萬美元漲到11.4萬美元(來源)。
方法:在Indeed.com網(wǎng)站上求職。為去除誤報,筆者將搜索與關(guān)鍵詞“軟件”配對的內(nèi)容,加強相關(guān)性,然后乘以1.5(大概是使用關(guān)鍵詞“軟件”的編程職位列表和不使用該關(guān)鍵詞的列表之間的區(qū)別。)所有的搜索引擎結(jié)果頁面按日期排列,并抽查相關(guān)性。得出的數(shù)字并不是100%準確,但是對于本文中使用的相對近似值來說已經(jīng)足夠了。
谷歌搜索趨勢
意料之中的是,搜索興趣*反映了就業(yè)市場份額,但存在一些有趣的差異。從圖中可以清楚地看到,2017年至今,jQuery的搜索興趣正在減弱,而Vue.js的搜索興趣卻呈現(xiàn)強勁的增長態(tài)勢。搜索份額如下圖:

與職位公告一樣,React有很大的領(lǐng)先優(yōu)勢,吸引了前端框架36%的搜索量,緊隨其后的是Angular(大約27%)和jQuery(25%)。對Vue.js的搜索興趣要比它占有的職位市場份額大得多,但該數(shù)據(jù)在排名方面一般與職位市場數(shù)據(jù)一致。這一點看來已經(jīng)被成功證實。
方法:對于所有字詞來說,數(shù)據(jù)都是按照主題而非檢索項收集的,目的是從無關(guān)的關(guān)鍵字匹配中排除誤報。
未來值得關(guān)注的框架
越來越多的職位需要掌握React技能的人才,而不是Svelte或Vue這樣的技能,它們雖然十分流行,但是應(yīng)用卻沒有這么廣泛(二者都獲得了很高的滿意度,但相比之下,行業(yè)采用率卻低得多)。
學(xué)會Svelte或Vue可能很酷——但是如果目標是找工作,那么先學(xué)會React會有更高的勝算。
也就是說,在JavaScript現(xiàn)狀調(diào)查2019中,Svelte和Vue都獲得了頗高的用戶滿意度。過去,React的高用戶滿意度預(yù)示著它將比Angular更快獲得收益,后者在當(dāng)時占據(jù)主導(dǎo)地位,但滿意度得分卻相對較低。
2019年,React的用戶滿意度排名第一,達到89%。Svelte(88%)和Vue.js(87%——低于去年的91%)緊隨其后。Svelte或Vue不太可能會搶走足夠的React用戶來提高自己的用戶滿意度,但是仍有大量Angular和jQuery用戶可能選擇Svelte或Vue,從而讓Svelte和Vue在2020年實現(xiàn)強勁增長。
可以肯定的是,掌握React會提高2020年找到好工作并留在工作崗位的幾率。
TypeScript vs JavaScript
毫無疑問,在過去幾年間,TypeScript實現(xiàn)了快速發(fā)展。JavaScript現(xiàn)狀調(diào)查顯示,89%的TypeScript用戶會再次使用TypeScript,而66%的受調(diào)查者或使用TypeScript,或?qū)ζ涓信d趣(略低于去年的71%)。
雖然人們的興趣十分濃厚,使用率似乎也在快速增長,但是職位市場對TypeScript的使用經(jīng)驗尚未有強烈的需求。只有約7%的JavaScript職位空缺在職位描述中提及TypeScript(來源)。在人事經(jīng)理的期望中,JavaScript開發(fā)人員能夠輕松使用TypeScript,所以他們有可能不會在職位啟事中提到TypeScript,這就導(dǎo)致了該數(shù)字可能偏低。
筆者堅信,TypeScript語言的投資回報率可能較低甚至為負。它會對生產(chǎn)力不利,而不是提高生產(chǎn)力,而且如果已經(jīng)應(yīng)用TDD、代碼審查、設(shè)計審查這樣強大的漏洞預(yù)防措施,那么TypeScript編碼就不太可能大幅減少漏洞的數(shù)量。
也就是說,TypeScript有不少優(yōu)點,用戶不應(yīng)對其心生恐懼,或者只因公司要求使用TypeScript而不是JavaScript就拒絕某份工作。TypeScript是JavaScript的超集,因此JavaScript轉(zhuǎn)換為TypeScript并不像學(xué)習(xí)一種截然不同的語言那樣具有挑戰(zhàn)性。
要想在2020年的求職市場中占據(jù)優(yōu)勢,學(xué)會TypeScript語言并不是必須的,但是TypeScript確實很有用,甚至對于標準的JavaScript來說也是如此。
筆者每天都用TypeScript為使用微軟代碼編輯器的JavaScript提供智能感知服務(wù)。該智能感知甚至可通過使用JSDoc(由可解釋類型注釋的TypeScript理解并解釋)或外部d.ts文件增強,VS代碼會自動為用戶使用的模塊獲取TypeScript定義。
注意:多年以來,筆者一直使用TernJS和Atom,享受著類似的好處,但是這兩者的配合使用缺少TypeScript+VS的代碼維護和社區(qū)支持。
若未嘗試過微軟代碼編輯器,可先從此開始。順便說一下,VS代碼在JS被調(diào)查地區(qū)中占據(jù)著JavaScript集成開發(fā)環(huán)境市場的主導(dǎo)地位,占據(jù)57%的市場份額(其次是網(wǎng)絡(luò)風(fēng)暴,占據(jù)14%的市場份額)。
數(shù)據(jù)管理
Redux在狀態(tài)管理器競爭中仍具有領(lǐng)先優(yōu)勢,但GraphQL和Apollo也正在獲得客戶的青睞和興趣。預(yù)計2020年對GraphQL的使用會持續(xù)增長。
也就是說,即使用戶使用GraphQL,仍然有強有力的證據(jù)可以證明Redux狀態(tài)管理器的能力,即使大家都不用Redux,他們也會因?qū)W習(xí)Redux而受益。
GraphQL是近年來流行的查詢語言。它句法簡單,但由于其用于全棧,且學(xué)習(xí)該語言需要學(xué)會怎樣將其連接到數(shù)據(jù)存儲層,因此令人望而生畏——不過值得付出努力。
在短期內(nèi),GraphQL不會完全取代JSONREST API。但是,2019年,它發(fā)展迅速,預(yù)計2020年會持續(xù)強勁增長。
后端
Express是占主導(dǎo)地位的Node框架,其滿意度很高,2020年也不會出現(xiàn)實力強大的挑戰(zhàn)者,但是隨著無服務(wù)器的興起,筆者預(yù)計Express會在新十年間逐漸喪失主導(dǎo)地位。

Next.js是全棧式的React框架,最初以Express為基礎(chǔ)構(gòu)建,但它此后從Express轉(zhuǎn)換成了無服務(wù)器和靜態(tài)優(yōu)化,開始瘋狂的發(fā)展。
將EricElliottJS.comExpress轉(zhuǎn)換為無服務(wù)器的Next.js,托管費用將減少90%,還可以加快頁面加載速度。強烈推薦。筆者目前在用Next.js和Zeit托管應(yīng)用程序。

測試
Jest和Cypress分別是很受歡迎的單元和功能測試工具,但是筆者更偏好RITEWay和TestCafe。RITEWay是單元測試的鼻祖:它是一種測試框架,始終回答每個單元測試必須回答的5個問題。
TestCafe是一種功能測試工具,像Cypress一樣,它不需要用戶與Selenium斗爭,但有更好的跨瀏覽器支持和出色的測試記錄器/IDE。強烈推薦質(zhì)量評價團隊使用TestCafe。
功能工具
Lodash、Ramda、Immer、Redux和RxJS是筆者經(jīng)常使用的功能工具。

2019年,Ramda實現(xiàn)了長足發(fā)展,并提供了Lodash沒有的一些工具,包括鏡頭和傳感器。通過管道運算符,RxJS提供傳感器樣式功能。
Immer無需改變JavaScript對象,讓操作變得容易。Redux是一種狀態(tài)管理工具。
2020年的科技格局
接下來的十年中,幾種新興技術(shù)將對人類生活產(chǎn)生巨大影響。以下是各方面技術(shù)的較新概況:
人工智能
人工智能可能是有史以來很具變革性的技術(shù)。各領(lǐng)域的學(xué)者和堅持己見的億萬富翁都將其描述為奇跡般的烏托邦或是人類的終結(jié)。
眾所周知,人工智能或許真的是人類的終結(jié),但也可能是人類與機器之間美好合作的開始。人類才剛剛開始模糊地了解人工智能未來的可能性。某些可能性令人恐懼(比如深度偽造),而某些可能性非常有用(比如Adobe Premiere用于視頻編輯的全新自動重新構(gòu)圖)。到目前為止,事實是人工智能既令人恐懼又非常有用。人工智能將繼續(xù)讓一些可怕的事情發(fā)生,但通過人工智能改善人類生活的潛力又是巨大的。潘多拉的盒子已經(jīng)打開,無法再關(guān)上,因此筆者希望人類能妥善運用人工智能解決重大問題并改善生活。
2019年,人工智能領(lǐng)域取得了許多重大突破。近年來,研究團隊在多種電子游戲中就超人性能展開競爭,但某些級別的游戲?qū)τ谌斯ぶ悄軄碚f仍充滿挑戰(zhàn),包括《星際爭霸Ⅱ》這樣的長期戰(zhàn)略性游戲。DeepMind的AlphaStar程序使用與人類玩家相同的資源,在官方的Battle.net服務(wù)器上進行游戲,已達到大師級水平。《星際爭霸》是一款復(fù)雜的游戲,玩家需要具備長期的戰(zhàn)略性思維,人們曾經(jīng)認為人工智能尚不具備這種思維。具備戰(zhàn)略性思維是人工智能通向通用人工智能道路上的一個重要里程碑。
如果這些游戲看起來像是對資源的愚蠢使用,那么請考慮一下DeepMind這樣的項目,該項目在語音合成領(lǐng)域已取得重大進展,可為人工智能代理和私人助理提供更加自然的聲音,另外,它還可讓失聲人士重新發(fā)聲,這一點更加重要。
人工智能還可用于診斷癌癥、預(yù)測蛋白質(zhì)折疊(該過程可用于了解疾病、研發(fā)新藥品)、恢復(fù)殘疾人士對肢體的控制、生成逼真的圖像等等。(來源)
自動駕駛汽車在變革性人工智能技術(shù)方面理應(yīng)自成一派。該體系的主要參與公司包括Cruise、Uber、Waymo、Nuro、Aurora、Ford等等。該技術(shù)發(fā)展仍處于初級階段,過分樂觀已給該行業(yè)帶來了大問題,但筆者深信不疑,超人的自動駕駛能力一定會在21世紀20年代出現(xiàn)。筆者曾在2015年對自動駕駛做過如下預(yù)測:
“到了2045年,開車的人看起來會像拉著越野車的馬。”
5年以后,筆者認為自己低估了自動駕駛汽車上市的速度。2018年,Waymo的自動駕駛汽車行駛了超過一百萬英里,美國有24個城市的公路上出現(xiàn)了自動駕駛汽車?,F(xiàn)在,筆者預(yù)計到2025年,多家制造商的多種車型將實現(xiàn)5級全自主性。請密切關(guān)注特斯拉、通用、福特和寶馬汽車公司。
過去的十年間,有關(guān)人工智能的研究論文出版量增長了10倍,目前人工智能正在為主流用戶提供實際且有用的工具,預(yù)計該趨勢在新十年間會持續(xù)下去。
人工智能做到了幾年前大多數(shù)人認為不可能做到的事,這是有目共睹的。期待人工智能在21世紀20年代創(chuàng)造更大的奇跡。
區(qū)塊鏈和加密貨幣
對于全球區(qū)塊鏈和加密貨幣來說,2019年是具有里程碑意義的一年。區(qū)塊鏈技術(shù)開始成為主流。預(yù)計2020年區(qū)塊鏈會有更大的發(fā)展和主流采用。
DeFi的迅猛發(fā)展讓用戶友好、無許可以及無銀行借貸成為可能。目前,DeFi擁有價值6.5億美元的合同(包括4.5億美元的無銀行貸款),該技術(shù)于2019年投入使用。隨著越來越多的人投資加密貨幣,筆者預(yù)計未來由加密技術(shù)支持的DeFi貸款會越來越多。
人們可以在不犧牲加密貨幣投資機會成本的前提下獲得流動資產(chǎn),或使用DeFi貸款通過杠桿效應(yīng)(提高投資風(fēng)險或回報)投資加密貨幣。
加密貨幣和區(qū)塊鏈技術(shù)正在突破主流。比特幣和以太坊的每日活躍地址數(shù)量于2018年1月達到峰值,隨后一年因市場不景氣,人們的興趣開始減弱(加密貨幣價格每增長10倍就出現(xiàn)大幅回落,下一周期的峰值比前一周期的峰值高出10倍)。

比特幣和以太坊區(qū)塊鏈的每日活躍地址情況(來源)
- Square的Cash App安卓下載量超過一千萬次——通過擁有優(yōu)秀用戶體驗的應(yīng)用軟件,用戶就可以購買、銷售、發(fā)送和接收比特幣。
- Coinbase的安卓下載量超過一千萬次。
- Brave推出了內(nèi)置的以太坊錢包,從十月到十一月底,該瀏覽器的月用戶數(shù)量從870萬上漲到了1040萬。
- 通過Sliver.tv和DLive,兩千萬電子游戲迷正在使用Theta網(wǎng)絡(luò)進行分散式流媒體播放。
2019年,筆者最滿意的進步是Fortmatic的引入。無論是否構(gòu)建加密應(yīng)用軟件,都可以用Fortmatic代替用戶身份驗證,提高安全性,擺脫供應(yīng)商鎖定,添加端到端加密、簽署交易等功能。
若要在2020年構(gòu)建新應(yīng)用程序,那么請考慮用Fortmatic代替滾動用戶名/密碼身份驗證(2020年沒人會這樣做),或者將身份驗證委托給谷歌、臉書等等。
筆者寫過一篇文章,討論了怎樣利用加密技術(shù)改善應(yīng)用程序身份驗證并提高安全性。期待主流應(yīng)用程序能在2020年采用Fortmatic這樣的技術(shù)。
以太坊在2019年的智能合約平臺競爭中輕松取勝。預(yù)計2020年它會繼續(xù)占據(jù)主導(dǎo)地位。
增強現(xiàn)實
筆者從小就夢想著增強現(xiàn)實能實現(xiàn),自2015年以來,每年都在寫關(guān)于它的承諾。擴展現(xiàn)實未來會取代手機。這只是時間問題。需要多長時間仍是個未知數(shù),但目前看來,轉(zhuǎn)變可能會在未來的十年間出現(xiàn)。甚至可能在未來的5年內(nèi)出現(xiàn)。
虛擬現(xiàn)實和增強現(xiàn)實之間的界限已經(jīng)模糊,因此業(yè)界現(xiàn)在將整個領(lǐng)域稱為擴展現(xiàn)實。自問世以來,ARKit和ARCore(蘋果和谷歌的增強現(xiàn)實軟件開發(fā)工具包)已取得了很大發(fā)展。2017年至2019年5月,月活躍用戶數(shù)量從4700萬上漲到了1.5億。
WebAR于2019年站穩(wěn)腳跟,2020年可能會繼續(xù)發(fā)展。若對此感興趣,請查看AR.js、React 360或Viro React。
硬件方面取得了眾多進展。2016年,開發(fā)者版本首次問世時,Hololens1售價約為5千美元。之后發(fā)生了什么呢?
Hololens2售價仍為3500美元,還未做好問世準備。剪輯、SLAM(抖動和偏移)、視野等方面仍存在問題。人們并不希望這些問題一直存在。但是每月99美元的定價讓獲得開發(fā)者工具包成為可能——即使需要等上一會兒。
無人機
美國已購買了約兩百萬架無人機,這些無人機已經(jīng)改變了建筑、地理調(diào)查、繪圖、影片、航拍、農(nóng)業(yè)、環(huán)境科學(xué)和娛樂產(chǎn)業(yè)。2020年,商用無人機很有可能在美國實現(xiàn)交付。
FPV無人機比賽是筆者最喜歡的觀賞性項目,無人機競賽聯(lián)盟現(xiàn)場直播比賽也是筆者的最愛。比賽還提供了精心設(shè)計的模擬器,以便觀眾了解無人機的樣子。
所有新型無人機活動都需要許多軟件,包括圖像處理、無人機地圖繪制軟件、交付飛行計劃、遙測記錄與處理、分析、行業(yè)應(yīng)用程序集成等等。
無人機軟件也與人工智能有許多重疊之處——自動飛行的無人機需要圖像處理、防碰撞等等。
結(jié)語
21世紀的首個十年涌現(xiàn)了許多變革性技術(shù),在人類看來,許多技術(shù)理所當(dāng)然,但它們確實產(chǎn)生了重大影響:
- 照片墻 (Instagram)
- 聲田(Spotify)
- 優(yōu)步(Uber)
- 虛擬助手
- 無線耳塞
- 主流虛擬現(xiàn)實
- 增強現(xiàn)實(用于熱門游戲《口袋妖怪GO》)
- 價格實惠的特斯拉
- 共享經(jīng)濟(汽車、小輪摩托車、自行車)
- 主流平板電腦
- 主流生物識別技術(shù)(觸摸識別、人臉識別)
- 眾籌
筆者迫不及待地想看看人類在新十年中的發(fā)展。
創(chuàng)造一些奇跡吧。