JavaScript生态调查,程序员都在npm下载什么库和工具?
npm有超过1000万用户每月下载超过300亿个包。而平均每周二,是npm压力最大的时候,用户会下载超过13亿个开源JavaScript包。这为npm提供了很多关于JavaScript用户的信息。除了这些数据之外,npm还与Node.js基金会和JS基金会合作,对超过16000名开发人员进行调查,询问用户的最新动态。
从这两个来源,npm发现了一些关于npm社区构成的洞察,以及社区认为最佳实践的信息。可以帮助用户在2019年做出技术选择。
JavaScript是世界上最流行的编程语言
JavaScript非常受欢迎并不是什么新鲜事。根据Stack Overflow社区的2018年开发人员调查显示,JavaScript是最流行的编程语言(紧随其后的Web语言是HTML和CSS)。GitHub最新的Octoverse调查,按照收到的拉取请求的数量对语言进行排名,JavaScript也是最高的。
JavaScript开发人员的总数很难估计。根据Slashdata的2018年调查显示,在2017年底有970万人,而且增长很快,这意味着此时有超过1000万人。与npm的观察差不多,npm用户超过1000万,他们看到了同样快速的增长。有些JavaScript开发人员尚未使用npm,但占所有JavaScript开发人员的百分比非常小,可能不到10%。
npm Registry有助于JavaScript的普及
毫无疑问,JavaScript的普及是由它作为唯一可直接用于开发Web应用程序的语言的普遍性驱动的。然而,Berkeley的Leo Meyerovich和Ariel Rabkin撰写的一篇引人入胜的论文研究了有助于编程语言采用的因素,并发现总体而言,与手头任务相关的开源库的可用性是选择编程语言的最重要因素。
npm自己的调查数据支持了本研究的结论。受访者选择JavaScript的最常见原因是可用库的数量。
npm目前拥有超过836000个库,是世界上最大的开源库集合,具有明显的优势。虽然JavaScript倾向于更小的库意味着这种比较并不完全是一一对应。无论如何,这个庞大的开源代码库意味着JavaScript和npm的流行有两种方式:语言因Registry而受欢迎,反之亦然。
npm用于构建各种应用程序
npm询问用户使用JavaScript的目的。93%的受访者表示他们为Web编写代码,仍然有70%的受访者表示编写的是运行在服务器上的JavaScript,即Node.js. 但是,包括物联网(IoT),桌面应用程序,本机移动应用程序在内的许多其他应用领域也看到了大量用户。
npm指出,对于npm团队来说,这是一个重大变化。npm的诞生是为了满足服务器端应用程序开发人员的需求,而且Web开发人员的需求也不同。现在Web开发占了大多数,意味着要改变我们的优先级,并推出新的功能。
npm对于Web开发至关重要
npm指出,在2014年开始时,通常会有一些包含几十个JavaScript包的树。目前,普通的现代Web应用程序有1000多个模块,超过2000个模块的树木并不少见。实际上,现代Web应用程序中97%的代码来自npm。开发人员只负责最终的3%,这使得他们的应用程序独特且有用。
代码重用印证了npm社区和开源的巨大成功。通过无需数千个模块中重新开发代码为数百万开发人员节省了编程时间。
npm在2018年专注于安全性
对于许多开发人员来说,npm只是成为构建网站的方式。在npm的调查中,77%的开发人员表示他们担心使用的开源库的质量和安全性,52%表示目前可用的工具不足。今年早些时候npm在JavaScript社区发布了对安全的态度,对这些结果进行了更深入的研究。
4月份,npm宣布收购Lift Security及其产品Node Security Platform。今天,NSP直接集成到npm中,每次安装npm都包含安全审核,如果用户正在安装不安全的模块,则会收到通知。npm还提供工具,通过自动安装其模块的安全版本来轻松纠正这些漏洞。此外,npm Enterprise和付费npm企业用户会收到尚未公开披露的漏洞通知。
npm用户的统计信息
根据npm的调查显示,参与本次调查的用户大多是新人。25%的人使用JavaScript的时间不到2年,51%的人使用npm的时间不到2年。用户大多自学成才,69%的npm用户主要是自学JavaScript,其中最高的是22%在工作中学习的用户。
使用npm的人并不总是严格的JavaScript开发人员。同时编写Java,PHP和Python的用户占30%,而其他语言的数量较少。
55%的npm用户称自己是在一家不被视为“技术”公司的公司工作。JavaScript不是“大公司”或“小公司”技术。npm用户也平均分布在每个行业。
每个人都希望减少工具
2018年的JavaScript因需要大量工具而被诟病,这与2014年的情况完全相反,当时Node.js被认为是“包含所有内容”的框架。今天,大多数开发人员根本不会将Node视为一个框架。与此相反,所有的受访者都希望看到更少的工具,更少的入门配置,以及更好的文档记录。
React的增长放缓
React继续主宰Web领域。2017年,超过60%的npm调查受访者表示他们正在使用React,并且从那时起它已经进一步发展。然而,2018年的增长速度低于2017年。
Angular的下载保持不变
Angular主要的两种组合在市场份额方面基本保持不变。
Ember的受欢迎程度有所回升
一个非常不寻常的现象,Ember的受欢迎程度似乎在下降,但趋势继续强劲反弹。截至今年9月,开发人员使用Ember的次数是年初的两倍多。但Ember的复苏,一方面原因可能是React的放缓。
Vue的强劲增长仍在继续
Vue已经快速增长,并且在2018年持续增长。许多Vue用户说他们选择了React,因为他们认为在保持可扩展性的同时更容易上手。但npm的调查显示,许多采用Vue的新用户放慢了React的增长速度。
GraphQL继续高速增长
由最受欢迎的客户端库Apollo跟踪的GraphQL继续受到欢迎。我们认为它将成为2019年的技术力量。
Babel的统治力
Babel对任何React用户都很熟悉,因为它是将React的下一代JavaScript转换为当前支持的JavaScript标准的工具。与React的60%市场份额一致,65%的npm用户使用Babel。(它也在React生态系统之外使用。)
然而,令人惊讶的是TypeScript,46%的受访者表示他们使用这个超集。这可能标志着开发人员编写JavaScript的方式发生了巨大变化。
npm对2019年的预测
由于JavaScript生态系统变得庞大,而且多变和快速变化,所以预测总是很困难,但npm对2019年做出了一些他们认为可以承诺的预测:
- 你将放弃当前的一种工具。在JavaScript,框架和工具不能持续使用。平均框架具有3-5年的最高普及阶段,随着人们维持遗留应用程序但转向更新的新工作框架,随后数年缓慢下降。准备好学习新的框架,而不是过于紧紧地掌握当前的工具。
- 尽管增长放缓,React将成为2019年的主导框架。一个Web框架有60%市场份额是很强大的,部分原因是React不是一个完整的框架,只是其中的一部分。这使它可以灵活地覆盖更多的用例。但是,为了在2019年构建一个Web应用程序,更多人将使用React而不是其他任何东西,这将在教程,建议和错误修复方面带来巨大优势。
- 需要学习GraphQL。将GraphQL投入生产可能为时尚早,特别是如果你的API已经完成,但2019年是应该考虑GraphQL概念的一年。你很有可能在2019年晚些时候和2020年的新项目中使用它们。
- 你团队中的某个人会引入TypeScript。46%的采用意味着TypeScript不仅仅是爱好者的工具。请考虑在2019年的项目中采用TypeScript。