2017 JavaScript生态圈调查报告

2018 年 1 月 7 日 InfoQ

你知道 JavaScript 的现状吗?你知道 JavaScript 中哪些库最受欢迎吗?你知道使用哪些库的开发者工资最高吗?(国外的工资看了引人严重不适,已经去掉了)

最近 JS 开发团队对前端到后端相关的主题向全世界超过 28000 名开发者提出了的 100 多个问题进行问卷调查,现在我们在这里和大家分享这个调查结果,相信大家看完全文会对 JavaScript 有自己的思考。

语言选择

当谈论 JavaScript 时,你不仅仅是在谈论单一的语言,而是要明白这是一系列的工具类型汇集到同一个目标,虽然 ES6 现在已经是一个行之有效的标准,但是仍然需要推广,TypeScript 的崛起可能会对其产生挑战,而 TypeScript 正迅速成为 JavaScript 领域的领导者。

根据对 JavaScript 的语言使用情况调查,发现使用人数 top5 从大到小的顺序为:ES6>原生 JavaScript(ES5)> TypeScript>Flow>Elm>ClojureScript>Reason,虽然 ES5 的使用率很高,但是我们注意到它的满意度很低,将近有一半使用过它的开发者表示不会再用,而 Tyscrip 由于正在使用和对其有兴趣的开发者较多,在今后可能会进一步发展,正如上文说,它可能会对 ES6 的地位造成威胁。

而根据调查,开发者对这些库打了 4 分(5 分制,下同),说明无论多么冷门(没错,我说的就是你,Reason!),开发者对自己使用的语言还是很满意。

中美对各个语言使用率对比

根据对中美对这些库的使用率和世界平均水平进行对比,发现中国开发者更倾向使用 ES6 和 Flow,而美国开发者更偏好 ES5。(猜测可能是调查偏差,参与这个调查的国人平均水平较高)

前端框架

JavaScript 上的斗争主要是由前端框架主导的,使用量 top5(从高到低)为:React、Angular 1、Vue.JS、Angular 2、Backbone,其中,React 仍然是这方面的主要玩家,Vue 发展很迅猛,已经超越 Angular 2 成为了使用量第三高的框架,Vue 在 Angular 的流行度下降之后获得了巨大的收益 ,也许到了明年,这张图表会变得很不一样。(另外, 其实还有很多勇士不用任何框架!)

中美对各个框架的使用率对比

再来看各个框架在中美的使用情况,可以发现 Vue 在中国的使用率远高于世界平均水平的,包括阿里巴巴和百度在内的公司都在使用 Vue,据 Vue 的作者尤雨溪的说法:“Vue 有非常完备的中文文档,所以大大促进了 Vue 在中国的应用。”

最后,开发者对这些库整体打了 3.8 分(5 分制)。

其他框架使用量排名

除了上面的主要框架,还有其他一些在前端领域使用量较少的框架,排在前三的是 Preact、Elm 和 Knockout,前阵子 React 闹专利纠纷时,很多人鼓吹 Preact 作为 React 的开源替代产品,这个库拥有最轻量级的框架和最优秀的性能,使其成为 React 的诱人替代品。

所有框架的使用占比

状态管理

状态管理重组了客户端和服务器上数据管理的解决方案,在客户端上,Redux 仍然是无可争议的领导者,但是 GraphQL 的兴起可能会动摇 REST API 的地位,它产生的巨大吸引力可能会在不久的将来推动 Relay Modern 和 Apollo 等库的发展。

中美对各个库的使用率对比

调查结果显示,美国对这些库的使用率和世界平均水平相差不大,而中国则有很大差异,Redux 和 MobX 相对而言在中国更受欢迎。(Firebase 在中国能用?这不科学!)开发人员对这些库的总体打分为 3.5 分。

其他库使用量排名

在被提及的其他状态管理库中,各种库的使用量都不算高,呈两级分化模式,VueX 作为 Vue 的官方库,使用量这么高无可厚非,MongoDB 则因为 JSON 通用的原因非常受前端开发者欢迎。除了 VueX 和 MongoDB,其他的基本都在 100 以下,说明开发者使用的状态管理库集中度比较高,用的基本都是主流的那几种库。

所有库的使用占比

不放这么大 VueX 都看不见了。

后端框架

在后端上,使用量排在前三的的是 Express、Koa 和 Meteor,但很明显,Express 几乎是处于霸主地位,能够与 Express 竞争的很少,Koa 虽然号称要取代 Express,但目前还待发展。另外,尽管多年来 Moteor 也一直在发展,但可惜的是,我们似乎还并不能充分利用它。据调查,开发者对这些库的整体打分为 3.5 分(5 分制)。

中美对各种库的使用率对比

根据对中美开发者的调查对比发现,中国开发者相对其他国家来说十分偏爱 Koa,但 Exprss 的使用率是却远低于世界平均水平。(国内几个后端框架不约而同选择了 Koa 作为其核心引擎,走在世界前列,给它们点个赞!)

语言和环境使用量排名

在语言和环境的排名中,数据相差不大,最高的 Node.js 使用量也不过一百多,看到这么多人选择.NET,微软欣慰的一笑。(国外的基准了)

所有库的使用占比

Express 胖到不行。

测试库

和 Javascript 界的其他领域一样,测试领域的竞争也很激烈,版本更新快,功能和性能常被拿来做比较,框架之间的“战争”也是水深火热,根据上图,毫无疑问,Mocha 和 Jasmine 现在是测试领域主流的框架,但同时 Jest 和 Enzyme 也从测试封装工具中脱颖而出,获得了非常高的评价,未来可期。

中美对各种库的使用率对比

调查结果显示,中国在 Jest、Ava 和 Mocha 的使用量是高于世界水平的,Jasmine 低于世界平均水平,相反,美国开发者却比较偏好 Jasmine。最后开发者对这些库打了 3.2 分,相对其他领域的库来说,分数较低。

被提及的其他库排名

前几名为 Karma、Qunit、Chai。

所有库的使用占比

前几名不分胜负了。

CSS 库与工具

在新的 CSS-in-JS 方法如样式组件中已经做了很多的工作,尤其是在 React 生态系统中。但是结果显示,目前开发者仍然更信赖如 SASS/SCSS、纯 CSS 这些主流方法的安全性。

中美对各种库的使用率对比

上图显示,在 CSS 对各种库的使用上都是与世界平均水平相接近的,但是中国几乎在每一种库上都和世界平均水平存在差异:中国开发者更偏爱 LESS,在 SASS/SCSS 上却远低于世界平均水平。

同时,开发者对这些库打了 3.8 分。

其他库使用量排名

在 CSS 领域,除了上面主流的几种库,其他的小众类型库的使用量也不低,尤其是 PostCSS、Bulma 和 semantic UI。(某大佬向我安利了好几波 PostCSS)

所有库的使用占比

构建工具

除了 NPM 之外,Webpack 仍然是构建工具的王者,这无疑是 Create-React-App 和 Next.js 这样的已经帮你把配置写好的 Webpack 封装工具的使用量上升导致的。这也可能是把双刃剑:如果有更好的选择,这些库会毫不迟疑地转向它。(我没有在说 Parcel,嗯!)

中美对这些库的使用率对比

除了 Webpack,在其他几种主流库上,中美和世界平均水平差异不大。

同时,开发者对这些库打了 3.7 分。

其它工具的使用量排名

由图易知,在其它工具的使用中,开发者基本上用的是 yarn,实际上我觉得可以把它列入主流了,甩开其它非主流太远了。

所有工具的使用占比

移动开发

PhoneGap/Cordova 的使用率高,但满意度很低,这绝对不是好兆头。React Native 最终可能会破坏当前的顺序,而且不管怎么样,原生 App 总会是最可靠的解决方案。

中美对这些库的使用率对比

然而,中国的开发者比较倾向于选择 Electron 和 React Native,美国开发者却喜欢原生应用。(感觉又是调查偏差)

其他库的使用量排名

所有库的使用占比

在移动开发领域,在其他非主流型的库中,PWA、Weex、nw.js 排名前三,他们各自的特点在这里就不详说了,PWA 还有 iOS 这块骨头要啃,Weex 仍需努力,nw.js 自从被英特尔收购,一下子连布道它的文章都没了,这是什么现象?

其它工具

以下是不太适合放在以上类别里的库。

包管理工具

在包管理工具中,开发者主要用的 Yarn、npm 和 Bower,在这里 yarn 已经超过 npm 成为了王者,其原因是 Yarn 有很多 npm 没有的优点,主要表现在:Yarn 的速度较快,支持并行安装、支持离线模式和安装版本统一等,所以 Yarn 也被认为是为了弥补 npm 的缺陷而生。

实用第三方库

报告显示 lodash 的使用量是远远高于其他库的,它的使用量甚至是 underscore 的 7 倍之多,而 4700 多名开发者表示仍然在使用 jQuery。

文本编辑器

在文本编辑器方面,微软的 VS Code 使用量最高,其次是 Atom 和 Sublime Text,它们分别位居第 2 位和第 3 位。

Code Linters

在 Code Linters 上,基本上可以一枝独秀来形容 ESLint,不过 Prettier 也不容小觑,它的一大特点就是能够支持命令行、API 等多种形式调用,可以让团队保持代码风格一致,现在包括 React 在内的很多项目都已经开始使用了。

开发者在 JavaScript 应用程序中最看重哪些功能?

服务端渲染

大部分人觉得是锦上添花的东西,没有也没啥。

代码拆分

代码拆分在某些场景还是很实用的。

积极的界面更新

Optimistic update,Metor 提出的理念,接受的人也不多。

热模块重载

现在用 Webpack 不配个保存自动刷新感觉跟上个世纪一样。

Time-Travel 调试

不明觉厉。

实时特性

各种绑定,各种改这儿变那儿,最后还不是要各种监听,各种擦屁股。

消除无用代码

很实用,但就怕删错了。

渐进式增强

优雅降级的另一种说法,这个比例是如此对称,仿佛看到了正态分布。

Service Workers

Safari 已经支持 Service Worker 拉!

离线使用

革命尚未成功,PWA 仍需努力。

开发者对 JavaScript 的看法

有 81% 的受访者表示 JavaScript 正朝着正确的方向前进,仍有 57% 的受访者表示构建 JavaScript 应用过于复杂,不过有 82% 的受访者表示喜欢 JavaScript 构建应用,并有 65% 的受访者将 JavaScript 当成其主要编程语言。

结   论

在这个调查中,我们提到的的每个库和工具都可以进一步细分为插件、安装包和其他扩展的列表。

我们还可以用已有的数据做更多的事情,例如,我们还没有分析哪些应用程序功能可以发挥最大价值,以及开发者对开发语言现状的看法,我们将在未来几周内处理这些结果。

总而言之,我们的结论和去年一样:JavaScript 在不断地改进和发展中,这足够令人兴奋,因为你知道学习 JavaScript 永远不会让你感到无聊!

那未来会怎么样呢?JavaScript 会成为主流吗?GraphQL 真的会接管世界吗?JavaScript、Reason 或 Elm 会成为默认的编程方式吗?只用一种方法可以找到答案:明年的年终调查——《2018 JS 生态分析》。

登录查看更多
0

相关内容

JavaScript 是弱类型的动态脚本语言,支持多种编程范式,包括面向对象和函数式编程。
【SIGMOD2020-腾讯】Web规模本体可扩展构建
专知会员服务
29+阅读 · 2020年4月12日
德勤:2020技术趋势报告,120页pdf
专知会员服务
190+阅读 · 2020年3月31日
报告 | 2020中国5G经济报告,100页pdf
专知会员服务
97+阅读 · 2019年12月29日
2020年你应该知道的8种前端JavaScript趋势和工具
前端之巅
5+阅读 · 2019年6月9日
12月报告:Python称王,C++败北!
程序人生
4+阅读 · 2018年12月6日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Arxiv
5+阅读 · 2019年11月22日
Arxiv
9+阅读 · 2019年4月19日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
21+阅读 · 2019年3月25日
Bidirectional Attention for SQL Generation
Arxiv
4+阅读 · 2018年6月21日
Arxiv
3+阅读 · 2018年3月28日
VIP会员
相关论文
Arxiv
5+阅读 · 2019年11月22日
Arxiv
9+阅读 · 2019年4月19日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
21+阅读 · 2019年3月25日
Bidirectional Attention for SQL Generation
Arxiv
4+阅读 · 2018年6月21日
Arxiv
3+阅读 · 2018年3月28日
Top
微信扫码咨询专知VIP会员