原文标题:This year in JavaScript: 2018 in review and npm’s predictions for 2019 本文翻译自 NPM 官方发布的一份报告。原文链接点击这里
这份报告是根据 Laurie Voss (NPM 的联合创始人、COO) 在 npm and the Future of JavaScript 上的演讲整理的。没有任何数据数据是完美的。如果你有任何的疑问,你可以阅读这篇文章,看下我们是怎么聚合这些数据的。
NPM 拥有超过 1000 万用户,每个月下载超过 300 亿个包。每周二是 NPM 访问量最大的一天。用户平均在这一天下载超过 13 亿 JavaScript 开源代码包。通过分析这些下载数据,我们可以看到 JavaScript 开发人员们都在从事哪方面的工作。除此之外,我们还和 Nodejs Foundation、JS Foundation 进行了合作,对 16,000 名开发者进行了调查,询问了他们正在从事哪方面的工作。
通过上面两种方式,我们发现了 npm 社区的内在组成以及社区的趋势。这将为你在 2019 年进行技术选型提供帮助。
JavaScript 是世界上最流行的程序开发语言
JavaScript 如此流行对任何人来说都不是一个新闻了。Stack Overflow 2018 年的开发者调查显示,JavaScript 是最流行的开发语言,其次是 HTML 和 CSS。GitHub 最近的 Octoverse 报告给出了所有开发语言 pull requests 数量的排名,JavaScript 也是位列第一。
JavaScript 开发者的总数量是很难计算的。Slashdata’s 2018 survey 报告指出,2017 年末,JavaScript 开发者数量为 970 万,并且在高速增长。这意味着当前至少已经有 1000 万开发者了。npm 已经有超过 1000 万用户了,同样在高速增长。不过一部分开发者仍然还没使用过 npm,不过这部分开发者的占比很小,估计小于 10%。
NPM 促进了 JavaScript 的流行
JavaScript 是唯一可以开发 web 应用的语言,毫无疑问,JavaScript 的流行与这一点是分不开的。不过,根据伯克利大学的这篇文章来看,拥有丰富的开源库,是开发者在选择一门开发语言时,最重要的因素。
我们自己的调查也支持了这个结论。开发者选择 JavaScript 最常见的原因是可用库的数量。
npm 拥有超过 836,000 个可用的开源库,是目前世界上最大的开源库集合。不过,JavaScript 更多的是小型库,数量多也是情有可原的。这么巨大的开源代码量,也表明了 JavaSciprt 和 npm 的流行是相互促进的。
npm 被用来构建各种应用
我们询问了开发者,他们写的 JavaScript 运行在哪里。93% 的人回答他们用来开发 web, 70% 的人表示他们在服务端使用 JavaScript,例如 Node.js。当然,还有其他的领域:物联网、桌面应用、端应用等等。
这对于在 npm 官方工作、维护 npm 命令行工具的我们,是一个显著的变化。npm 起初是为了服务端应用而诞生的,而 web 开发者的需求是不一样的。成为一个主要为 web 端服务的平台,改变了我们的优先级,于是,我们开发了例如 package-lock.json 的新功能。
npm 对 web 开发来说是必须的
当 npm 在 2014 年诞生的时候,使用几十个 JavaScript 包是很典型的。如今,一般的 web 应用都会使用超过 1000 个模块,超过 2000 个模块的也不少。事实上,现代 web 应用中,97% 的代码都来自 npm。开发者只需要对剩下的 3% 代码负责,就能使他们的应用跑起来了。
这对代码复用,npm 社区以及开源界来说是巨大的成功。不需要在数千个模块中创建代码,为数百万开发人员节省了数以亿计的编码时间。
2018 年,npm 将专注安全
对于大多数开发者来说,npm 已经成为了开发一个网站的方式。这对于我们来说是责任。在我们的调查中,77% 的开发人员担心他们使用的库的质量与安全性,52% 的人认为他们所使用的库是不值得信任的。
4 月份,我们发布了 Node Security Platform。如今,Node Security Platform 已经集成到了 npm 中。每一次 npm 的安装都会有安全审核,告诉开发者他们是否正在安装一个不安全的模块。我们还提供了通过自动安装模块的安全版本来轻松纠正这些漏洞的工具。总之,我们坐了很多事,来保障安全。
npm 用户特征
我们调查对象的基本特征在之前发布的报告中涵盖了。但有一些事实需要注意。
很多新人。25% 的开发人员使用 JavaScript 不到两年,51% 的人使用 npm 不到两年。这是社区不断壮大的副作用。
大部分是自学的。69% 的 npm 用户是自学的 JavaScript,22% 的人是在工作中学习的。
不仅仅使用 JavaScirpt。npm 的使用者并不都是严格的 JavaScript 开发者 —— 30% 的人还使用 Java,30% 还使用 PHP,30% 使用 Python,还有其他的一些语言。
并不在科技公司工作。55% 的 npm 使用者表示他们并不在一个可以被称为【科技】公司的地方工作。
同时,在某些方面,npm 用户与软件开发人员并没有什么不同,这本身是很有意思的事情。比如,npm 使用者在各种规模的公司工作,与这些公司的分布比例大致相同。JavaScript 并不是一个 '” 大公司技术 ” 或 ” 小公司技术 ”。npm 用户分布在各个行业,也有着不用的年龄段以及受教育程度。
每个人都希望少用工具
2018 年的 JavaScript,在某种程度上是令人诟病的。因为你需要引入很多的工具才能让代码跑起来。这和 2014 年的情况是相反的。2014 年的时候,Node.js 被认为是一个 “ 包含所有 ” 的框架。今天,绝大多数的开发者根本不会把 Node.js 当做一个框架。诚然,我们所有的被调查者都希望使用更少的工具,更少的配置就能开始开发,也希望看到更完善的文档。那么,他们喜欢的是什么样的工具呢?
今年初,我们深入调查了各种 JavaScript 框架的流行度,报告在这里 part1、part2、part3。我们不会在这里复述所有的分析结果,但我们可以一起来看看从过去的 9 个月都发生了些什么。
React 的增长放缓了
React 继续统治 web 榜。在 npm 的调查中,超过 60% 的受访者表示他们正在使用 React。这个比例比年初时已经有不小增长。但是,React 在 2018 年的增长速度较 2017 年已经放缓了。
Angular 的下载量保持平稳
两种最主要的 Angular 版本结合起来,在时长份额方面基本保持不变。
Ember 的流行程度反弹了
一个非常不寻常的现象,Ember 的受欢迎程度本来在下降,但却迎来了强劲的反弹。到 9 月份,使用 Ember 的开发者人数已经比年初时的两倍还多。我们将继续关注这个情况。我们认为,Ember 的反弹是 React 增长放缓的原因之一。
Vue 继续强劲增长
Vue 在 2018 年继续强劲增长。许多 Vue 的使用者表示,他们之所以放弃 React 选用 Vue,是因为 Vue 在保持扩展性的同时,比较容易上手。目前我们的观点是:许多新用户选择使用 Vue,导致了 React 的增长放缓。
GraphQL 持续高速增长
GraphQL,根据其最受欢迎的客户端库 Apollo 来看,正在变得越来越受欢迎。我们认为它将在 2019 年成为新的热门技术。
编译依然由 Babel 领衔,不过有一个惊喜 – TypeScript
所有的 React 使用者来说,Babel 并不陌生,它被用来将 React 下一代的 JavaScript 转换成现在的语法标准。React 占据了 60% 的市场份额,而 65% 的 npm 使用者正在使用 Babel(Babel 也在 React 的生态之外被使用).
令人略有意外的是,46% 的受访者表示他们正在使用微软的带有类型检查的 JavaScript – TypeScript. TypeScript 的大量使用,也许预示着开发者书写 JavaScript 的方式将彻底改变。我们将在下一次的调查中,更多关注 TypeScirpt 的使用情况。
npm 对于 2019 年的预测
JavaScript 拥有一个巨大,多变,快速发展的生态,对其进行预测是困难的。但是我们的数据可以使我们对 2019 年进行一定的预测。
你将会放弃你现在使用的工具。JavaScript 的框架和工具更新很快。框架的平均流行周期是 3 - 5 年。随着人们都在维护遗留的应用程序,框架的流行程度渐渐衰退。当人们开始新的工作时,他们将使用新的框架。做好准备学习使用新的框架吧,不要死抓住你现在的工具不放。
尽管增速放缓,React 在 2019 年仍将是最有统治地位的框架。60% 的 web 框架时长份额是前所未有的,部分原因是:React 并不是一个完整的框架,而只是其中的一部分。这使得 React 可以在更多场景灵活使用。2019 年,更多的人会使用 React 来开发 web 应用,这将为 React 在教程、建议以及 Bug 修复上带来优势。
你需要学习 GraphQL。在生产环境中使用 GraphQL 或许过早了,特别是在你的 Api 都已经完成的情况下。但是 2019 年,你应该有意识的接触 GraphQL 的概念了。当你在 2019 年末、2020 年参与新项目时,这将是你使用 GraphQL 的好机会。
你们组的同事将会引入 TypeScript。46% 的使用率表示 TypeScript 不仅仅是一个发烧友的工具。人们是真正体会到了类型检查提供的安全性所带来的好处。特别的,当你身处一个大组时,考虑在 2019 年使用 TypeScript 吧。
保持淡定
我们可以十分确信的做出预测:社区将会继续高速发展,JavaScript 将会拥有很多的能力。随着它的增长,我们将记录新的趋势,并与社区分享我们的见解。你可以订阅我们的周报,在 twitter 上关注我们,以了解最新的行业动态。
写在最后
本文逐句翻译了 NPM 官方的报告,符合预期。欢迎关注公众号: