每日前端夜话,陪你聊前端。每天晚上18:00准时推送
原文:https://2018.stateofjs.com/ 翻译:疯狂的技术宅
这是一篇长篇调查报告,限于篇幅分为三次推送,今天推送中篇。
前端仍然是JavaScript的关键战场。 不过现在已经尘埃落定,看上去只剩下了两个战士……
前端框架整体情况。
对于给定选项选择“使用它,并将再次使用”的开发人员的工资细分。
每个单元格显示给定工资范围内的用户百分比,较暗表示较高的使用率。
针对特定选项选择“使用它,并将再次使用”的开发人员的公司规模细分。
每个单元格显示给定公司大小范围内的用户百分比,较暗表示较高的使用率。
对于选择“使用它,并将再次使用”的开发人员,对于给定选项的工作经验年限细分。
每个单元格显示给定年份经验范围内的用户百分比,较暗表示较高的使用率。
在一分(非常不满意)到五分(非常满意)的范围内,开发人员的整体满意度如何?
GitHub 120k stars
用于构建用户界面,高效且灵活的JavaScript库。
平均而言,64.5%的受访者使用过 React ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 120k stars ?一种渐进的,可增量使用的JavaScript框架,用于在Web上构建UI。
平均而言,28.7%的受访者使用过 React ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
Angular是一个基于TypeScript的开源前端Web应用程序平台。 请注意,与以往不同的是,调查的过去版本中还有一个关于AngularJS的问题。 但此处提供的所有数据仅涉及Angular。
平均而言,23.8%的受访者使用过 Angular ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 21k stars
⚛️采用与 Fast 3kB React相同API的替代品。 包括组件和虚拟DOM。
很抱歉,我们没有足够的数据来显示该库随着时间推移的流行度。
平均而言,6.2%的受访者使用过 Preact ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 20k stars Ember.js —— 用于创建Web应用的JavaScript框架
平均而言,5%的受访者使用过 Ember ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 20k stars 原始Web组件库
平均而言,3.1%的受访者使用过 Polymer ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
调查受访者提到的其他答案,按提及计数排名。
此图表显示了每种技术的满意度与其总使用量之比。
ASSESS(评估):低使用率,高满意度。 技术值得关注。 ADOPT(采用):高使用率,高满意度。 采用安全技术。 AVOID(避免):低使用率,低满意度。 技术目前最好避免。 ANALYZE(分析):高使用率,低满意度。 如果您正在使用这些技术,请重新评估这些技术。
前端领域再次被 React和 Vue.js占领。
Vue的故事特别值得考虑:在两年前,27%的受访者甚至从未听说过这个库。而今天,这一比例已降至1.3%!因此,虽然React仍然拥有更大的市场份额,但Vue的迅速崛起肯定没有停止的迹象。实际上,Vue已经超过其竞争对手的某些指标,如总GitHub stars数。
过去几年的另一个故事是Angular的垮台。虽然它在原始使用方面仍然排名很高,却只有41%的满意度。因此,由于其庞大的用户群,它可能不会退出舞台,不过很难看到它重新获得在前端宝座上的位置。
最后,留意一下Svelte。通过对前端框架采用的一种全新方法,它非常有趣,并且是我们“其他工具”类别中迄今为止提到的最多的选项。
更新:很多人都指出,Angular的满意度不高可能部分是由于Angular与较旧的、弃用的AngularJS之间的混淆(之前的调查通过将两者作为单独的项目来避免这个问题)。因此,尽管Angular在几年前丢掉了其统治地位 —— 相对而言,一旦尘埃落定,它很可能会恢复到原来的状态。
数据层重新组合用于传输和管理数据的所有技术。 这是一个庞大的类别,大量的竞争使一个棘手的问题变得更容易。
GitHub 45k stars JavaScrip可预测状态容器
平均而言,46.9%的受访者使用过 Redux ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 10k stars GraphQL是一种可以与任何后端服务相关联的查询语言和执行引擎。
平均而言,20.3%的受访者使用过 GraphQL ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
功能齐全的GraphQL缓存客户端,适用于UI框架和GraphQL服务器。
平均而言,11%的受访者使用过 Apollo ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 18k stars 简单,可扩展的状态管理。
平均而言,5.6%的受访者使用过 MobX ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 12k stars
Relay是一个用于构建数据驱动的React应用的JavaScript框架。
平均而言,1.1%的受访者使用过 Relay/Relay Modern ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
调查受访者提到的其他答案,按提及计数排名。
此图表显示了每种技术的满意度与其总使用量之比。
ASSESS(评估):低使用率,高满意度。 技术值得关注。 ADOPT(采用):高使用率,高满意度。 采用安全技术。 AVOID(避免):低使用率,低满意度。 技术目前最好避免。 ANALYZE(分析):高使用率,低满意度。 如果您正在使用这些技术,请重新评估这些技术。
在过去的美好时光里,事情总是很简单。 数据存储在数据库中,服务器可以在其中获取数据,将其放入模板中,然后将整个数据发送到客户端。
但事情并不那么简单。 今天,程序需要知道自己如何获取数据以呈现在模板和组件中。 这就产生了一系列的数据提取和数据管理工具。
毫无疑问,Redux是这些工具中使用最广泛的工具,其82%的满意率证明了它的成熟度。
但整个领域很快就会受到GraphQL冲击波的影响。 GraphQL用户在两年内从5%上升到20%,他们选择的客户端似乎是Apollo。 另外Apollo的最新版本使Redux成为可选项,如果明年的结果看起来非常不同,那就不足为奇了……
后端的JavaScript近年来没有取得任何重大突破。 与其他生态系统的疯狂步伐相比,许多人会说这是一种祝福,而不是一种诅咒。
GitHub 41k stars node的高效极简的Web框架。
平均而言,63%的受访者使用过 Express ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 32k stars React框架。
很抱歉,我们没有足够的数据来显示该库随着时间推移的流行度。
平均而言,8.4%的受访者使用过 Next.js ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 24k stars 使用ES2017异步函数的node.js的富有表现力的中间件
平均而言,7.4%的受访者使用过 Koa ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 40k stars Meteor,JavaScript App平台
平均而言,4.6%的受访者使用过 Meteor ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 20k stars Node.js的实时MVC框架
平均而言,1.7%的受访者使用过 Sails ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 10k stars 适用于现代应用的REST和实时API层。
平均而言,1.6%的受访者使用过 FeathersJS ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
调查受访者提到的其他答案,按提及计数排名。
此图表显示了每种技术的满意度与其总使用量之比。
ASSESS(评估):低使用率,高满意度。 技术值得关注。 ADOPT(采用):高使用率,高满意度。 采用安全技术。 AVOID(避免):低使用率,低满意度。 技术目前最好避免。 ANALYZE(分析):高使用率,低满意度。 如果您正在使用这些技术,请重新评估这些技术。
服务器上的JavaScript处于奇怪的状态。 虽然每年都有无数框架出现,但很少有人能够获得足够的动力来挑战Express。 甚至被称为Express的继任者的Koa,其满意度较低(并且使用数量大大降低)。
这个领域的一个有趣的参与者是Next.js,最近引起了很多人的兴趣。 虽然它与功能齐全的Node后端可比性不太大,但它专注于解决React应用的服务器端呈现问题,使其成为一个非常有用的工具。
看看AWS Lambda等无服务器技术将在未来几年内扮演什么样的角色也很有趣。 谁知道,我们所知道的后端可能很快就会成为过去式!
GitHub 22k stars 令人愉快的JavaScript测试。
平均而言,39.1%的受访者使用过 Jest ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 17k stars ☕为node.js和浏览器提供简单,灵活,有趣的javascript测试框架
平均而言,38.9%的受访者使用过 Mocha ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 14k stars 适用于浏览器和node.js的简单JavaScript测试框架
平均而言,28.1%的受访者使用过 Jasmine ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 16k stars 适用于浏览器和node.js的简单JavaScript测试框架
平均而言,19.9%的受访者使用过 Enzyme ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 10k stars 惊人的JavaScript测试器。
很抱歉,我们没有足够的数据来显示该库随着时间推移的流行度。
平均而言,18.2%的受访者使用过 Karma ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 31k stars 交互式UI组件开发和测试:React,React Native,Vue,Angular,Ember
很抱歉,我们没有足够的数据来显示该库随着时间推移的流行度。
平均而言,15.2%的受访者使用过 Storybook ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
GitHub 15k stars ?未来的JavaScript测试器
平均而言,15.2%的受访者使用过 Ava ,并乐于再次使用它。
比率较高的国家和地区显示为红色,较低的国家/地区显示为蓝色(调查受访者总数少于20的国家和地区将被省略)。
调查受访者提到的其他答案,按提及计数排名。
此图表显示了每种技术的满意度与其总使用量之比。
ASSESS(评估):低使用率,高满意度。 技术值得关注。 ADOPT(采用):高使用率,高满意度。 采用安全技术。 AVOID(避免):低使用率,低满意度。 技术目前最好避免。 ANALYZE(分析):高使用率,低满意度。 如果您正在使用这些技术,请重新评估这些技术。
测试领域有点奇怪:虽然JavaScript生态系统的其他部分已经慢慢解决了几个主要的方案,但测试仍然非常分散:不同点很多,工具之间功能互补。即便如此,开发者对他们的整体测试解决方案感到满意,最低的满意度为68%。
该调查证实,Mocha仍然是最常用的单位测试框架,有超过1万用户。它已经存在了很长一段时间,拥有最大的生态系统,大多数的Node.js开发者都熟悉它。
Jest在使用方面紧随其后,但其满意度略高:96%对82%。96%是今年整个调查中第高的满意度。只有ES6获得了更好的成绩!
这表明开发人员真的很感激Facebook所做的努力,提供了一个功能齐全的测试框架,可以用来测试前端(它在开始的初衷是测试React组件)和后端代码,而不需要配置。
在“单页应用程序”时代,Web应用程序变得越来越复杂,在客户端实现越来越多的逻辑。调查显示,开发人员使用许多工具来测试他们的应用程序。
测试范围很广:单元测试,集成测试,端到端测试以及“视觉测试”,正如我们可以看到Storybook的成功(该类别的第二高满意率)。
测试的未来可能包括更多在浏览器中进行自动化测试的解决方案,像Cypress这样的项目可能会包含在明年的调查中,我们可能会看到更多基于Puppeteer的工具。