2020年,JavaScript仍然很糟糕,整体上还是设法向前发展了。由于语言本身Optional Chaining(可选链操作符)和Nullish Coalescing(空值合并操作符)等新功能而不断改进,因此TypeScript的广泛采用通过普及静态类型将事物推向一个全新的高度。
在框架方面,就在我们认为一切都已解决的时候,Svelte进来并用前端的全新方式震撼一切。在多年的webpack统治下,甚至构建工具也显示出新活动的迹象。
但是这次的区别是,相对而言,“老”后卫什么都没走。Svelte和Snowpack很棒,但是React和webpack也很棒。可以肯定的是,它们最终也会成为JavaScript大流氓的牺牲品,但是不会持续很多年。
因此,让我们享受这里所拥有的一切:一个不断完善的强大生态系统!
一、技术现状
2016 -- 2020年趋势图,每条线从2016年到2020年(较粗一端为2020年)。纵轴越高,表示一项技术被更多的人使用,横轴越大,表示有更多的用户想要学习,或者曾经使用过,还会再次使用。
从上图中可以看出随着年限的的增长,webpack、Express、React、TypeScript、Jest位于榜单前列。
二、编译为js的语言
1、满意度:
根据上图可知,第一名:TypeScript、第二名:PureScript、第三名:Reason。
2、感兴趣度
根据上图可知,第一名:TypeScript、第二名:Reason、第三名:Elm。
3、使用率:
根据上图可知,第一名:TypeScript、第二名:Elm、第三名:Reason。
4、总结:
根据以上统计可以看出,TypeScript依旧独领风骚,其次就是Elm,但是PureScript也是一个值得关注的增强类型语言。
三、前端框架和库
1、满意度:
根据上图可知,第一名:Svelte、第二名:React、第三名:Vue.js。
2、感兴趣度:
根据上图可知,第一名:Svelte、第二名:Vue.js、第三名:React。
3、使用率:
根据上图可知,第一名:Svelte、第二名:Angular、第三名:Vue.js。
4、总结:
正如开头所说,svelte的出现真的是对前端行业的冲击,原以为三大框架(React、Vue.js、Angular)包揽所有的时候,它出现了,一度成为了第四名(使用率),但是从兴趣度和满意度来看,它未来的潜力不可估量。
四、数据层
1、满意度:
根据上图可知,第一名:GraphQL、第二名:Apollo Client、第三名:Vuex。
2、感兴趣度:
根据上图可知,第一名:GraphQL、第二名:Apollo Client、第三名:XState。
3、使用率:
根据上图可知,第一名:Redux、第二名:GraphQL、第三名:Apollo Client。
4、总结:
使用排名比较高的状态管理依旧是Redux、Vuex、Mobx。数据管理为GraphQL和Apollo,并且XState横空出世。
五、后端框架(服务器上的JavaScript):
1、满意度:
根据上图可知,第一名:Next.js、第二名:Express、第三名:Fastify。
2、感兴趣度:
根据上图可知,第一名:Next.js、第二名:Express、第三名:Fastify。
3、使用率:
根据上图可知,第一名:Express、第二名:Next.js、第三名:Gatsby。
4、总结:
Express依旧是统治地位,而Next和Nuxt这些服务端渲染的框架也逐渐成为大家的所选的框架。
六、测试框架:
1、满意度:
根据上图可知,第一名:Testing Library、第二名:Jest、第三名:Cypress。
2、感兴趣度:
根据上图可知,第一名:Jest、第二名:Storybook、第三名:Cypress。
3、使用率:
根据上图可知,第一名:Jest、第二名:Mocha、第三名:Storybook。
4、总结:
Jest和Mocha在使用量上依旧是统治地位,但是新增Testing Libray很强劲。
什么是Testing Library ?用于 DOM 和 UI 组件测试的一系列工具,主要 API 包含 DOM 查询,更可以和其他测试工具(jest、cypress)配合,用于更多场景(react、vue、svelte)。而它是 React 的官方推荐。
我们推荐使用React Testing Library[2],它使得针对组件编写测试用例就像终端用户在使用它一样方便。
七、打包工具:
1、满意度:
根据上图可知,第一名:esbuild、第二名:Snowpack、第三名:TypeScript。
2、感兴趣度:
根据上图可知,第一名:Snowpack、第二名:esbuild、第三名:webpack。
3、使用率:
根据上图可知,第一名:webpack、第二名:Gulp、第三名:TypeScript。
4、总结:
虽然短时间内webpack使用量还处于霸主地位,这一年打包工具的发生了巨大的变化。可以说这里发生了天翻地覆的变化。从Parcel到Snowpack,再到后来的esbuild,每一个都是打包的好手,至于Vite为什么没有在其中,我猜想,Vite最开始只是为了解决Vue单个框架的方向,受众面不够广泛(现在它已经支持了多种框架的打包了)。
八、移动和桌面端(适用于移动设备和桌面应用程序的JS):
1、满意度:
根据上图可知,第一名:Electron、第二名:Capacitor、第三名:React Native。
2、感兴趣度:
根据上图可知,第一名:Electron、第二名:React Native、第三名:Native Apps。
3、使用率:
根据上图可知,第一名:React Native、第二名:Cordova、第三名:Electron。
4、总结:
Electron依旧是桌面端的第一选择,Cordova和React Native也是移动跨端的热门选择。但是新出的Capacitor值得关注。
九、常用的工具函数库有
根据上图可知,第一名:Npm、第二名:ESLint、第三名:Prettier。
十、JavaScript引擎/运行时/执行环境
根据上图可知,目前主要使用Node.js和Browser。
十一、编辑器
根据上图可知,目前VS Code依旧是统治地位。