关于javascript:2020-年-JavaScript-状态调研报告小结

38次阅读

共计 5214 个字符,预计需要花费 14 分钟才能阅读完成。

一年一度的 Discover the State of JS 2020 results 在前几天新鲜出炉了,每次浏览这份报告都能帮忙我疾速地理解到 JavaScript 世界在这一年里都产生了哪些事件,同时也给了我一次查漏补缺的机会,让我非常收益。

往年我打算以文字的形式,和大家疾速分享一下这份报告在「语法」和「框架」两个局部所开释出的信息,心愿可能对大家有所帮忙和启发。

往年的考察覆盖率了 137 个国家的 23,765 集体,大多数被调研者来自美国或西欧。报告地址:https://2020.stateofjs.com/en…。

1. Features

这一部分我将会针对 ES6 以来,新的语法个性的应用状况进行概括和总结,并偶然发表一些本人的认识,如果您对某个内容有本人的见解,也欢迎您在文章的评论区下方留言。

留神每个语法个性背地的百分数代表着: 被调研的开发者中应用过该个性的人数占比


1.1 语法个性

语法个性方面,像 Destructuring(89.1%),Spread Operator(92.8%),Arrow Functions(97.9%)这样便宜好用又大碗的语法个性曾经被宽广开发者使用的滚瓜烂熟。然而像 Nullish Coalescing(45.3%),Optional Chaining(66.7%)这样同样好用的不得了的语法个性看起来并没有被遍及开来宽泛应用,不想代码里再有俊俏的 a && a.b && a.b.c 判断符,间接上手就来一个 a?.b?.c 切实是既洒脱又酷。

毫不意外 Private Fields(10.9%)这个语法个性不仅应用的人不多,而且 43.9% 的被调研开发者示意听都没听说过。我特地去查了下,这个语法个性是 ES2020 草案提出的,目前 Firefox,IE 和 Safari 还不反对。

然而这个语法个性示意 JavaScript 终终终于要有语法层面的公有类字段了,很快乐看到 JavaScript 这门基于原型链的语言在 OOP 范式上又后退了一小步,不晓得 Java 开发者不晓得会不会感到十分开心?


1.2 语言个性

Async/Await(95.2%),Promises(96.2%)这样的老牌异步解决方案看来曾经是耳熟能详,被开发者宽泛应用了。然而像 Decorators(47.4%),Dynamic Import(42.8%)语法应用的人却并不多,至于 Proxies(22.3%)Promise.allSettled()(14.7%)这两个语法则更是不仅应用的人不多,连没听说过的人都不少。

如果说平时写业务很难用到像 Proxy 这样的对象代理计划,用的人少还情有可原。像 Dynamic Import 这种动静加载资源的计划配合上 webpack 打包出异步加载的 chunk 一起应用,相对是页面性能进一步优化的大杀器,还不理解同学能够深度钻研一下。

Promise.allSettled 这个办法终于补齐了 Promise 系列的全家桶,原来的 Promise.all 办法只在异步执行的函数集相互依赖时无效,碰上想要理解每个异步函数解决状态的状况,还是 Promise.allsettled 办法更好使。


1.3 数据结构

数据结构方面,Maps(73.4%),Sets(66.9%)这样的数据结构曾经比拟宽泛的被开发者们应用,而像 Typed Arrays(34.9%),Array.prototype.flat()(39.6%)这样的数据结构和新语法则较少被用在工作之中,BigInt(13.9%)的使用率最低,但个别开发需要中也确实用不上。

有一说一,Array.prototype.flat() 这个办法其实挺好用的,尽管咱们能够通过 Spread Operator 疾速将一个 2 层嵌套的数组「拍平」变成一个一维数组,然而当咱们须要对一个多于 2 层的数组进行「拍平」时,通过向 flat() 办法中传入参数的形式,显然更加不便。


1.4 浏览器 API

Local Storage(90.6%),Fetch(87.1%)这种往年看来曾经不再陈腐的 API 毫无疑问大家都在用,也的确在存储和 HTTP 申请上没有什么更好的原生计划。

而 WebSocket 62.6% 的使用率,Service Workers 42% 的使用率和 Intl 31.3% 的使用率也算是荒诞不经,毕竟受应用场景限度。

Shadow DOM(42.1%),Custom Elements(33.4%)无疑是往年最令人疯狂的浏览器 API 了,想想不通过应用 React 和 Vue,仅通过浏览器原生提供的性能就能实现高效可复用的组件化,生命周期函数什么的也一应俱全,好像好不容易学会的 React 如同今天就要过期,JavaScript 原教旨主义者终于一统天下。

可是别快乐的太早,事实还是很骨感,别说当初还没有像 Fusion,Antd 一样成熟的 UI 组件库能够开箱即用,如何通过这些 API 稳固搭建 SPA 利用,整个社区还没有探讨出一个像 React,Vue 和 AngularJS 一样的成熟计划,所以还是先等等吧,先相熟一下 API 总是没错的。

至于像 Web Audio(20%),WebGL(17.5%),Web Animations(16.3%),WebRTC(14%),Web Speech API(8.2%),WebVR(3.3%)这些只有特定开发需要才会应用的 API,应用的人少也是非常失常,然而可千万不要因而就疏忽了这些 API。

Web AudioWeb SpeechWebRTC 对于影音视频流的传输和交互就十分重要,WebGLWeb AnimationsWebVR 则更是将 Web 世界的表达能力拉高了好几个台阶。我觉的大家真该好好想想如何联合本身的业务场景通过这些浏览器能力寻求更新的冲破,说不定下个风口或是交互模式翻新就诞生在你的团队。到时候可千万别忘了给我发个红包(笑)。


1.5. 其余

最初咱们再看看 WebAssembly (WASM) 的调研状况,真正应用过的开发者占比为 10.5%,73.9% 的开发者听过然而没用过,15.6% 的开发者则是听都没听说过。

我感觉大多数前端开发者应该都处于听过没用过的象限,目前社区对于 WebAssembly 也的确没有很大的音量。用 C++ 和 Rust 编写 Web 利用这种事件对于 Web 开发者而言也确实没有多大吸引力。将来的倒退如何,我还是抱着静观其变的态度。


2. 技术框架

技术框架局部我将重点关注技术框架的应用数量以及对框架的称心水平两个方面,它们代表了以后风行的技术选型以及将来可能风行的技术方向。每一种技术我都会附带 ???? 链接,不便您点击理解更多技术细节。


2.1 语言格调

2020 年对于 JavaScript 到底应该怎么写才对味这个问题,TypeScript 毫无争议地一锤定音,93% 的参加调研者示意十分满意通过 Typescript 束缚本人的 Javascript 代码,看来这个年头还不拥抱 Typescript 的开发者相对是 out 了。

而对于以后的语言格调是否令人满意的调研则示意,在满分 5 分的限定下,无论是 2019 年还是 2020 年,开发者们都只打了 3.6 分这样差强人意的分数来表白 JavaScript 在更优雅的编写方面还有很多摸索的空间。


2.2 前端框架

前端框架方面 React,Angular 和 Vue.js 毫无疑问地仍然是世界三大框架。但说进去你可能不信,「最令人满意的前端框架」竟然不是 React 而是 2019 年才由 Rich Harris 推出的 Svelte。有 66% 的被调研者示意感兴趣这个框架,并且 89% 的被调研者示意应用这个框架令他们感到十分满意,总之一句话,用过的都说好。

Svelte 人如其名,强调在构建时就间接产出最小的残缺的代码,从而在应用时能够间接应用构建后的组件,而无需增加框架本身,因而不仅打包后的利用代码体积更小,因为没有 diff 操作,性能也大幅提高。只惋惜目前 Svelte 还不反对 Typescript,也没听说过哪些大型项目在应用,否则泛滥前端开发 er 们可就又有的学了。


2.3 数据层

数据层框架上国外火的一塌糊涂,国内却怎么也火不起来的 GraphQL 仍旧是数据层框架排行榜的万年老二,应用最多的状态治理框架仍旧是耳熟能详的 Redux。沾着 GraphQL 和 React 的光,Apollo Client 近三年来也始终稳稳地占据了排行榜第三名的地位。

比拟有意思的是 2020 年异军突起的两大框架 Vuex 和 XState 迅速的从老牌状态治理框架 Redux,MobX 的身材上越过别离取得了最受开发者称心排场榜上第三名和第四名的好问题。我 Vuex 倒是没怎么用过,然而 XState 倒是实打实调研了一把,的确是物有所值的好框架,特地是最近风行的逻辑编排,状态编排,各种编排,配上自带的流程图,不仅立即感觉高大上了很多,而且的确切实解决程序状态简单后,难以梳理分明的老问题。


2.4 后端框架

我最近一年简直没怎么写服务端利用,通过调研报告才发现我用的最纯熟的 Koa 的风行度曾经连年上涨,到了应用度排名的中部地位。当初 Next.js 和 Express 才是开发服务端利用的首选,并且也是用过的都说好。认真一看 Hulu,Docker,Netflix 都在用 Next.js,和我一样落伍的同学真应该好好补补功课。


2.5 测试框架

说到测试框架,自从 2019 年 Jest 从 Mocha 手中抢过龙头棍,从此就始终稳坐测试框架届的头把交椅。在应用度排名上,Mocha 和 Storybook 紧随其后,然而看起来仿佛不可能撼动 Jest 的江湖位置。

比拟值得注意的是,由 Kent C. Dodds 开发的 Testing Library 测试框架一经公布就引来了很多前端开发者的关注。Testing Library 主打 DOM 测试,全面反对支流的三大框架,提供一堆好用不贵的 API,用起来那叫一个合乎用户应用习惯。惋惜国内的开发者大多都不器重单元测试这块,更别提是 DOM 元素级别的测试,我大胆预测下 Testing Library 在国内会像 GraphQL 一样始终放弃不温不火的状态,的确惋惜但也没方法。


2.6 构建工具

说到构建工具,那是真的有的聊了,尽管 webpack 仍然以 89% 的使用率独占鳌头,然而要看泛滥开发者 2020 年感兴趣或是满意度高的构建工具,你会诧异地发现已经如日中天的 gulp.js,Browserify 曾经慢慢透出中年危机的势头,而 webpack 也在往年跌落神坛,在最受用户称心的构建工具排行榜只排到了第四名。

要说第三名被 TypeScript 抢去还能了解,前两名别离是 esbuild 和 Snowpack 我置信很多国内的开发者听到肯定一头雾水,但其实别离去官网看看就能分明这两个构建工具主打的还是构建速度的晋升,尤其是 esbuild,从官网上给的数据来看要比 webpack 构建速度晋升了整整 113 倍。

诚实说,随着我的项目越来越大,再加上 monorepo 计划逐步在国内风行开来,构建时长有时候真是间接影响着开发体验,一个我的项目 build 十几秒,怎么看也不像是前端开发应该呈现的场景,无论是 esbuild 还是 Snowpack,如果有机会,还是激励大家多去尝试,总结经验,造福社区。


2.7 利用端 / 桌面端

毫无疑问,要想用 JS 编写桌面端利用,最好的框架相对是 Electron。但如果要是开发挪动端利用的话,2020 年抉择就不止有 React Native 了,2020 年新登台的 Capacitor 同样非常亮眼,尽管只有 10% 的被调研者真正在应用,然而其中 84% 的开发者都示意应用起来非常令人满意。

然而从应用体验上看,整体的挪动端 / 桌面端框架的满意度并不高,近几年根本放弃在 3 分左右的状态,看来前端想要在各个端上实现重复左右横跳,还须要更加具备突破性的技术创新。


3. 小结

以上就是 2020 年 JavaScript 整体状态的疾速一览,总的来说,无论是语言个性还是各种框架和库,在 2020 年,都没有什么突破性的变动,爆发式的增长。然而仔细观察你会发现实际上在各个细分畛域,都有些翻新和实际在悄悄地产生,比方构建性能的晋升,前端测试的欠缺,Web 表白的丰盛等等等等。

一些前端畛域老大难的问题,如何更高性能地实际组件化,如何真正实现 JavaScript 的「一次开发,处处运行」仍旧没有一个盖棺定论,换句话说还在期待着更聪慧的开发者来解决。

如果非要问 2020 年最红的技术是什么的话,我十分不主观地认为本届的奖杯毫无疑问地要颁发给 TypeScript,随着 TypeScript 新版本的更新,编写前端代码真是越来越对味。

以上,如果您喜爱这篇文章,别忘记点赞或是分享,让更多人看到。这些都会被我视为您对我创作的反对。


4. 广告

阿里巴巴淘系用户增长团队正在如饥似渴的寻找气味相投的搭档,如果您筹备好迎接适度的挑战,在让更多人喜爱手淘的同时,让本人疾速成长,欢迎您发送简历至我的邮箱:kongtang.lb@alibaba-inc.com,我非常期待收到您的讯息。

正文完
 0