今天带大家看看2021年的state-of-js调查结果:一目了然下面是我摘下的几个对比out重要的是,让我们先快速浏览一下:可选链接运算符的使用率已经高达85%。空合并运算符(??)的使用率增加了21%。将近50%的受访者正在使用ShadowDOMAPI。esbuild是满意度调查中同比增长最快的工具。Vite97%26%目前有5.6%的受访者在使用Deno。一些老的JS库Axios、Lodash和Moment仍然是最受欢迎的。TypeScriptJavaScriptElmJSFeatures-LanguageProxyProxy在各种框架和库中的使用越来越多(尤其是在Vue.js3.0开始使用之后),因此越来越多的同学了解它,但实际使用率并没有太大变化。Promise.allSettled()Promise.allSettled()我还没用过。它的用法类似于Promise.all。不同的是,所有给定的promise只要全部返回就会返回,不管是fulfilled还是rejected。当您不关心是否所有异步任务都必须成功时,可以使用它。DynamicImport:目前只有15%的人不知道,近50%的小伙伴用过,一般是在懒加载的时候。NullishCoalescingNullValueMergingOperator:这个东西用的人多吗?用过的朋友可以在评论区告诉大家,我一般用||或&&更频繁。空合并运算符(??)在左操作数为空或未定义时返回右操作数,否则返回左操作数。与||的区别是||左边为0时也会返回右边,而??将返回0。constbaz=0??42;控制台日志(baz);//0constconard=0||42;console.log(conard);//42OptionalChaining:使用率达到了85%,非常实用的特性,不多说了。PrivateFields私有属性:只有20%的人用过。我们在类中定义的属性或方法默认是public的,可以通过在前面加#号使其变为private(只能在类内访问)。classClassWithPrivateField{#privateField;}classClassWithPrivateMethod{#privateMethod(){返回'你好ConardLi';}}BigIntBigInt可以解决Number的精度损失问题。一般我们推荐使用BigInt来表示大于2^53的数字,但是目前的使用率还很低,人们通常会使用一些库来处理数字。String.prototype.replaceAll()replaceAll:允许我们根据规则模式执行更灵活的字符串替换。该功能在第一年参加调查后才得到Chrome85的支持。这么多人已经用过了。真是一个很实用的函数:constregex=/ConardLi/ig;console.log(p.replaceAll(regex,'太棒了!'));JS特性-浏览器APIServiceWorkersServiceWorker:服务器和浏览器之间的中间人角色,它可以拦截当前网站的所有请求,我们可以在中间做很多灵活的判断和处理。只有8%的人不知道,使用率达到了45%。IntlIntl浏览器为我们提供了用于国际化的原生API。国际化的要求一般比较复杂。反正我们用库来做国际化,省心不少。这个还没有用过。WebAudioAPI控制Webaudio的API,仅供特定领域的开发者使用,变化不大。WebGLWeb图形需求越来越复杂多样,WebGL的普及是必然的。现在大部分人都明白了,但是用户还是局限于特定的领域。今年的增长率略有变化。相信以后会有爆发式的增长~WebAnimationsAPIdom上的animate函数属于WebAnimationsAPI我们日常使用CSS实现的动画之一,可以转成JS:document.getElementById("CoonardLi").animate([{transform:'rotate(0)translate3D(-50%,-50%,0)',color:'#000'},{color:'#431236',offset:0.3},],{duration:3000,迭代次数:无限});这个大家应该都明白,一般XXX课程和网页动画实战之类的文章都会提到,但是在实际开发中更多的是用CSS或者一些JS库来实现动画。WebRTCWebRTC(WebReal-TimeCommunications)是一种实时通信技术,可以在网络应用程序或站点中无需中介的情况下在浏览器之间建立点对点连接,实现视频流和/或音频流或其他的传输任意数据。同样,它也是一个会在特定领域(比如直播)使用的API,使用人群非常有限。WebSpeechAPI用在WebaudioAPI中,也是一种只在特定需求场景下使用的API。使用率很低,变化不大。Websocket是本次调查中使用最多的WebAPI。不用说,只有4%不知道它是什么……ShadowDOMShadowDOM是WebComponents中一个重要的API:浏览器使用的模板、样式表、属性、JavaScript代码等,都被打包成一个独立的DOM元素.外部设置不影响其内部,内部设置不影响外部,很像浏览器如何处理原生网络元素,如
