Web上十大重量級API家族
Web上的API太多啦,這裏主要指主流瀏覽器chromium引擎提供的龐大標準庫,其中JavaScript標準樹的葉子屬性或函數的數量就有大幾千。這麼大規模的api自然要想辦法給他們分類,目前有許多分類標準:
按名稱/時間分類:MDN官網是按照首字母分類的、W3C和WhatWG則按照標準推出的時間來分類。
按硬件來分類:在cpu、gpu、內存、外存、網卡、IO設備中,所有的api分爲調用某個硬件或混合使用多個硬件。
按體量分類:分爲單量級、微量級、輕量級、中量級、大量級、重量級、巨量級。
是否在安全上下文環境(https)中才能使用,參考《拋棄HTTP的API們》。
其中按體量分類沒有嚴格的標準,我們經常使用的API包括alert,console.log,setTimout這些都只是單個的函數,像包含許多子函數的console對象才能勉強稱之爲一個API家族,但console只能被貼上“輕量級”的標籤,因爲和其他API大家族相比,console簡直太小了。如果把所有API家族整合到一棵家族樹上,樹的主幹無疑就是V8的基本引擎:JavaScript/Html/CSS,也就是最常用的WebUI渲染引擎,無需多言。我們今天來談談家族樹上其他的巨大分支,我整理了10個巨量級的API家族,看看你認識幾個:
WebStorage:外存相關的API,包括sess/localStorage、indexDB/WebSQL、AsyncCaches(甚至cookies)。
WebGL:GPU圖形卡渲染驅動器,3D遊戲引擎。
WebAssembly:Web彙編指令集,原生內存堆棧空間接口。
WebComponents:WebUI擴展,虛擬DOM框架,安全組件化設計模式,可以自定義html元素。
ServiceWorker:WebApp的守護進程,WebDaemon後臺代理,包括PWA、WebWorkers多線程。
TypedArray:二進制字節流工具,包括Buffer處理器、Blob、File接口、Bitmap。
2D graphics:矢量圖/位圖引擎,包括canvas、SVG標記語言、Image接口。
Streams:可讀可寫流,http請求工具Fetch。
WebLearning:【未完成】Web機器學習算法庫。
這10個API家族個個不簡單,想精通其中任何一項至少要花費3個月的學習時間,若想全部掌握這些API起碼得經過10000小時的科學訓練,但毫無疑問,在你全部掌握的那一刻,你已經是計算機領域的專家了(互聯網方向)。
本文分享自微信公衆號 - WebHub(myWebHub)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。