您好,登錄后才能下訂單哦!
為了深入剖析2019年 JavaScript 的發展狀況,我們從以下幾個方面針對 JavaScript 開展了問卷調查:
語言特征
能夠編譯成JavaScript的語言
前端框架
數據層
后臺框架
測試
跨移動與桌面開發的工具
其他工具
開發人員整體的看法
共計21,717名開發人員參與了此次問卷調查。這些開發人員來自不同的國度,薪資、開發經驗、所在公司規模、性別、職位等各個方面的差異性也很大:
國家:美國、加拿大、俄羅斯、法國、德國、巴西、澳大利亞等
薪資:0-20萬美元+
開發經驗:0-20年+
公司規模:1-1000人+
職位:全棧開發、前端開發、Web開發、后臺開發等
概述
在深入分析之前,讓我們先來看一看2019年 JavaScript 生態系統的全面概述!
2016-2019年間各項技術和框架的發展曲線
上圖中每條線代表一種語言或框架在2016-2019年間的發展曲線。縱向越高代表使用這項技術的人越多,而橫向越靠右代表想學習這項技術的人越多。
在這里小編建了一個前端學習交流扣扣群:132667127,我自己整理的最新的前端資料和高級開發教程,如果有想需要的,可以加群一起學習交流
滿意度與使用情況
上圖顯示了每種技術的用戶滿意度。大致可分為以下四個象限:
評估:低使用率,高滿意度。代表值得關注的技術。
采用:高使用率,高滿意度。代表可安全采用的技術。
回避:低使用率,低滿意度。代表目前應避免的技術。
分析:高使用率,低滿意度。 如果你正在使用該技術,請重新評估。
語言特征
JavaScript 作為一種編程語言,最值得令人欣慰的事情就是它一直在不斷的發展中。從箭頭函數到解構,在過去的幾年中 JavaScript 增添了許多關鍵功能,且已成為我們編寫代碼時不可或缺的一部分。
下面我們將從語法、語言、數據結構、瀏覽器API以及其他方面深入分析 JavaScript 編程。
使用情況概述
上圖顯示了 JavaScript 各個類別的功能的使用情況。
外圈代表了解該功能的用戶總數,內圈則代表實際使用過該功能的用戶。
語法
1. 解構(destructuring)
一種 Javascript 表達式, 可以將屬性/值從對象/數組中取出,賦值給其他變量。
85.1%的用戶曾使用過,8.4%的用戶有所了解但未曾使用,6.5%的用戶未曾聽說過。
2. 展開語法(spread syntax)
可以在函數調用/數組構造時, 將數組表達式或者string在語法層面展開;還可以在構造字面量對象時, 將對象表達式按key-value的方式展開。
89.5%的用戶曾使用過,7.5%的用戶有所了解但未曾使用,3%的用戶未曾聽說過。
3. 箭頭函數(Arrow Function)
箭頭函數表達式的語法比函數表達式更簡潔,并且沒有自己的this,arguments,super或new.target。這些函數表達式更適用于那些本來需要匿名函數的地方,并且它們不能用作構造函數。
97%的用戶曾使用過,2.2%的用戶有所了解但未曾使用,0.8%的用戶未曾聽說過。
語言
1. Proxy 對象
Proxy 對象用于定義基本操作的自定義行為(如屬性查找,賦值,枚舉,函數調用等)。
17.3%的用戶曾使用過,39.7%的用戶有所了解但未曾使用,43%的用戶未曾聽說過。
2. Async/Await
async function 用來定義一個返回 AsyncFunction 對象的異步函數。
88.4%的用戶曾使用過,10.7%的用戶有所了解但未曾使用,0.9%的用戶未曾聽說過。
3. Promise
Promise 對象用于表示一個異步操作的最終完成 (或失敗),及其結果值。
93.8%的用戶曾使用過,5.2%的用戶有所了解但未曾使用,1%的用戶未曾聽說過。
4. 裝飾器(Decorator)
簡單來說,裝飾器是將一段代碼與另一段代碼包裝在一起的一種方式。
37.9%的用戶曾使用過,37.4%的用戶有所了解但未曾使用,24.7%的用戶未曾聽說過。?
數據結構
1. Map
Map 對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。
70.6%的用戶曾使用過,23.5%的用戶有所了解但未曾使用,5.9%的用戶未曾聽說過。
2. Set
Set 對象允許你存儲任何類型的唯一值,無論是原始值或者是對象引用。
56.5%的用戶曾使用過,30.6%的用戶有所了解但未曾使用,12.9%的用戶未曾聽說過。?
3. TypedArray
JavaScript TypedArray 是一種類似于數組的對象,其提供了在內存緩沖區中讀寫二進制數據的機制。
28.1%的用戶曾使用過,35.4%的用戶有所了解但未曾使用,36.5%的用戶未曾聽說過。
4. Array.prototype.flat()
flat() 方法會按照一個可指定的深度遞歸遍歷數組,并將所有元素與遍歷到的子數組中元素合并為一個新數組返回。
26.8%的用戶曾使用過,40.8%的用戶有所了解但未曾使用,32.5%的用戶未曾聽說過。
瀏覽器API
1. Fetch
Fetch API 提供了一個獲取資源的接口(包括跨域請求)。任何使用過 XMLHttpRequest 的人都能輕松上手,而且新的 API 提供了更強大和靈活的功能集。
81.5%的用戶曾使用過,11.3%的用戶有所了解但未曾使用,7.1%的用戶未曾聽說過。
2. 國際化(i18n)
Intl 對象是 ECMAScript 國際化 API 的一個命名空間,它提供了精確的字符串對比、數字格式化,和日期時間格式化。Collator,NumberFormat 和 DateTimeFormat 對象的構造函數是 Intl 對象的屬性。本頁文檔內容包括了這些屬性,以及國際化使用的構造器和其他語言的方法等常見的功能。
41.6%的用戶曾使用過,39.5%的用戶有所了解但未曾使用,18.9%的用戶未曾聽說過。
3. 本地存儲(local storage )
只讀的localStorage 屬性允許你訪問一個Document 源(origin)的對象 Storage;存儲的數據將保存在瀏覽器會話中。
88%的用戶曾使用過,10.3%的用戶有所了解但未曾使用,1.7%的用戶未曾聽說過。
4. Service Worker
Service workers 本質上充當Web應用程序與瀏覽器之間的代理服務器,也可以在網絡可用時作為瀏覽器和網絡間的代理。它們旨在(除其他之外)使得能夠創建有效的離線體驗,攔截網絡請求并基于網絡是否可用以及更新的資源是否駐留在服務器上來采取適當的動作。他們還允許訪問推送通知和后臺同步API。
36.1%的用戶曾使用過,54%的用戶有所了解但未曾使用,9.8%的用戶未曾聽說過。
5. Web 動畫
Web Animations API 允許同步和定時更改網頁的呈現, 即DOM元素的動畫。它通過組合兩個模型來實現:時序模型和動畫模型。
14.2%的用戶曾使用過,52%的用戶有所了解但未曾使用,33.8%的用戶未曾聽說過。
6. Web 音頻
Web Audio API 提供了在Web上控制音頻的一個非常有效通用的系統,允許開發者來自選音頻源,對音頻添加特效,使音頻可視化,添加空間效果 (如平移),等等。
20.6%的用戶曾使用過,58%的用戶有所了解但未曾使用,21.4%的用戶未曾聽說過。
7. Web 組件
作為開發者,我們都知道盡可能多的重用代碼是一個好主意。這對于自定義標記結構來說通常不是那么容易 — 想想復雜的HTML(以及相關的樣式和腳本),有時你不得不寫代碼來呈現自定義UI控件,并且如果您不小心的話,多次使用它們會讓頁面變得一團糟。
27.7%的用戶曾使用過,61.2%的用戶有所了解但未曾使用,11.1%的用戶未曾聽說過。
8. WebGL
WebGL (Web圖形庫) 是一種JavaScript API,用于在任何兼容的Web瀏覽器中呈現交互式3D和2D圖形,而無需使用插件。
16.7%的用戶曾使用過,68.6%的用戶有所了解但未曾使用,14.7%的用戶未曾聽說過。
9. WebRTC
WebRTC (Web Real-Time Communications) 是一項實時通訊技術,它允許網絡應用或者站點,在不借助中間媒介的情況下,建立瀏覽器之間點對點(Peer-to-Peer)的連接,實現視頻流和(或)音頻流或者其他任意數據的傳輸。
10.9%的用戶曾使用過,46.3%的用戶有所了解但未曾使用,42.9%的用戶未曾聽說過。
10. WebSocket
WebSockets 是一種先進的技術。它可以在用戶的瀏覽器和服務器之間打開交互式通信會話。使用此API,您可以向服務器發送消息并接收事件驅動的響應,而無需通過輪詢服務器的方式以獲得響應。
59.2%的用戶曾使用過,33.8%的用戶有所了解但未曾使用,7.1%的用戶未曾聽說過。
11. Web Speech API
Web 應用可以利用 Web Speech API 處理語音數據。這個API包含兩個組件:SpeechSynthesis(文字轉語音)和 SpeechRecognition (異步語音識別)。
7.5%的用戶曾使用過,46.8%的用戶有所了解但未曾使用,45.7%的用戶未曾聽說過。
12. WebVR
WebVR API 能為虛擬現實設備的渲染提供支持 — 例如像Oculus Rift或者HTC Vive 這樣的頭戴式設備與 Web apps 的連接。
3%的用戶曾使用過,48.4%的用戶有所了解但未曾使用,48.6%的用戶未曾聽說過。
其他特征
1. 漸進式Web應用(Progressive Web App,PWA)
PWA 運用現代的 Web API 以及傳統的漸進式增強策略來創建跨平臺 Web 應用程序。這些應用無處不在、功能豐富,使其具有與原生應用相同的用戶體驗優勢。
48.2%的用戶曾使用過,45.5%的用戶有所了解但未曾使用,6.3%的用戶未曾聽說過。
2. WebAssembly
WebAssembly 是一種新的編碼方式,可以在現代的網絡瀏覽器中運行 - 它是一種低級的類匯編語言,具有緊湊的二進制格式,可以接近原生的性能運行,并為諸如C / C ++等語言提供一個編譯目標,以便它們可以在Web上運行。它也被設計為可以與JavaScript共存,允許兩者一起工作。
7.1%的用戶曾使用過,75.1%的用戶有所了解但未曾使用,17.8%的用戶未曾聽說過。
開發人員對 JavaScript 的看法
為了保證編程語言的健康發展,我們應該聽從社區的呼聲。我們可以從開發人員對 JavaScript 各個方面的看法中發現問題,例如 JavaScript 的發展方向是否正確、復雜度是否在加劇、使用情況、以及變化速度等。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。