Web上十大重量级API家族
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小时的科学训练,但毫无疑问,在你全部掌握的那一刻,你已经是计算机领域的专家了(互联网方向)。