作為程式設計師,眾所周知程式語言的選擇對我們來說非常重要,因為所有程式設計師都希望自己的技術力能夠跟得上市場的最新需求。
程式語言是最富爭議性的熱門話題,也是一部分強大的開發人員社群的核心。另外,程式語言對於工具的開發商也至關重要,因為他們需要確保提供最有用的SDK。
JavaScript就是程式語言中最神奇的存在:無論你是否承認,曾經備受爭議的JavaScript早已發展成為程式語言中最流行的一門語言,現在,它在網際網路各個領域都大展身手,全球約有1200多萬開發人員在使用這種程式語言。而JavaScript社群也是增長最快的社群之一。
不僅新手開發人員認為JavaScript的入門非常簡單,而且經驗豐富的開發人員也願意嘗試這種技術。因此,如今超過半數的Web應用程式、雲服務或第三方生態系統的擴充套件開發人員都在使用JavaScript。
最近,TheStateofJavaScript釋出了最新的調查報告,這份報告收集了來自超過20000名工程師的反饋問卷,所以這份報告對於瞭解過去一年的JavaScript生態圈的情況非常有參考意義,可以幫助到你瞭解到哪些技術是未來的趨勢,哪些技術是明顯的坑。
在這篇文章,小渡會總結這份報告的精華部分和未來趨勢,給你一份參考,幫你形成系統性知識體系。
(文章所有資料來自《2020-JS調查報告》)
1、真實性
每一年都會發佈一個JavaScript的行業報告,資料來自於公開的問卷調查(今年的資料來自137個國家的23,765個開發者)。
可以看到大部分問卷的渠道是來自於他們本身的官網,除此之外還有Twitter/ Google 等。
所以這個問卷的真實性是不用懷疑的。本文只挑選了部分小渡覺得有點意思的資料展示出來,完整資料可以見原版《2020JS調查報告》。
2、關於JavaScript
JavaScript(通常縮寫為JS)是一種高階的、解釋型的程式語言。JavaScript是一門多正規化的,基於原型、函式先行的語言,它支援面向物件程式設計,指令式程式設計,以及函數語言程式設計。目前已被世界上的絕大多數網站所使用,也被世界主流瀏覽器(Chrome、IE、Firefox、Safari、Opera)支援。
雖然JavaScript與Java這門語言不管是在名字上,或是在語法上都有很多相似性,但這兩門程式語言從設計之初就有很大的不同,JavaScript的語言設計主要受到了Self(一種基於原型的程式語言)和Scheme(一門函數語言程式設計語言)的影響。在語法結構上它又與C語言有很多相似(例如if條件語句、switch語句、while迴圈、do-while迴圈等)。
在客戶端,JavaScript在傳統意義上被實現為一種解釋語言,但在最近,它已經可以被即時編譯(JIT)執行。隨著最新的HTML5和CSS3語言標準的推行它還可用於遊戲、桌面和移動應用程式的開發和在伺服器端網路環境執行,如Node.js。
3、人口資料統計
國家和地區:
今年被調查的人員覆蓋了137個國家的23,765人,其中來自美國的佔比最多:21.1%,來自中國的佔比:0.9%。
薪資待遇:
別說了,小渡看到這個資料實名羨慕那2.9%的大佬,我不想努力了。百分30的人的薪資待遇(年收入)在50~100k(美元)之間,根據目前的匯率算成人民幣就是在 32~64W之間。
工作經驗:
從工作經驗來看,2-20年的開發者比較多。還有一部分(7.4%)的開發者工作經驗超過20年了,實名respect!
4、JavaScript語法、特性相關調查
解構賦值去年、今年使用率都挺高,2020年有89.1%的人都用到了解構賦值。
2020年有92.8%的人都用到了展開語法。
空值合併運算子(??)是一個邏輯運算子,當左側的運算元為null或者undefined時,返回其右側運算元,否則返回左側運算元。不過使用率僅有45.3%,是不是不好理解這個運算子呢?
可選鏈運算子(?. )允許讀取位於連線物件鏈深處的屬性的值,而不必明確驗證鏈中的每個引用是否有效。?.運算子的功能類似於.鏈式運算子,不同之處在於,在引用為空(nullish ) ( null 或者undefined)的情況下不會引起錯誤,該表示式短路返回值是undefined。與函式呼叫一起使用時,如果給定的函式不存在,則返回undefined。
報告顯示使用過的佔66.7%,還不錯哦。
私有域這個不多介紹了,現在爭論比較大。感興趣的朋友可以自己在各大論壇上了解一下。目前使用過的佔10.9%(小渡比較好奇什麼樣的專案會用到~)
5、技術
前端框架
輪子哥RichHarris打造的Svelte雖然起步晚,但勢頭猛。Angular、Ember直線下降。
後端框架
移動、桌面開發
Electron、Capacitor、ReactNative 前三留名。
其他工具
使用最多的庫Top5:Axios、Lodash、Moment、date-fns、RxJS。
6、前端趨勢
下圖是前端技術棧的一個整體趨勢圖,從2016年-2020 年的使用情況。
來看幾個我們正在用和需要了解的技術棧(幾根右上角區域的紅線):
1.webpack用的人還是越來越多,但是學習的意願已經在降低了
2.Jest用的人和學習的意願高速增長中
3.TypeScript用的人也是在飛速增長
4.React和Vue.js用的人穩定增長,但是學習的意願也降低了
...
總結:TypeScript開發和Jest測試,這兩項能力快掌握起來吧。
7、滿意度和使用度
這張圖表示的是開發者對於目前一些前端技術的滿意度和實用度:
使用人數多,滿意度高:
TypeScript
React
webpack
express
Jest
...
這些都是非常火熱,並且前端開發都應該掌握或者瞭解的技術。
使用人數少,滿意度高:
esbuild
snowpack
SWC
LitElement
PureScript
...
這裡的幾個技術都是目前炒的非常火的概念,面向未來開發,作為前端開發我們有必要提前瞭解這些技術。
使用人數多,滿意度低:
Gulp
Angular
不說了,都是淚。
8、獎項
程式語言的問世,使人們一方面迫不及待地希望看到令人興奮的新語言功能和庫,這些新功能和庫有望使開發人員獲得更好的體驗。但是同時,人們也渴望獲得穩定性和簡單性來完成你的工作。
如何選擇?2020年js調查報告表明:比以往任何時候都更加表明,我們不會滿足於這兩者,並且再一次顯示了JavaScript生態系統的豐富程度。
似乎經過了多年的爭論和忽視JavaScript之後,開發者社群終於找到了第三種選擇:改進它。
JavaScript基本上是能滿足你任何想要實現的需求,它為語言變體和適應性敞開大門,而且這種趨勢幾乎沒有停止的跡象。這也許就是為什麼大多數開發者都認為,儘管存在缺陷,JavaScript語言仍然朝著正確的方向發展。
其實每項技術都是需要經過漫長的技術成熟曲線才能得到大規模採納的,保持對新技術的敏感度,在合適時機選擇合適自己的技術才是最好的。