关于JavaScript的2018年表现和2019年预测, NPM官方发布了一份报告

简介: 关于JavaScript的2018年表现和2019年预测, NPM官方发布了一份报告

640.jpg


原文标题:This year in JavaScript: 2018 in review and npm’s predictions for 2019

本文翻译自NPM官方发布的一份报告。原文链接: https://medium.com/npm-inc/this-year-in-javascript-2018-in-review-and-npms-predictions-for-2019-3a3d7e5298ef

点击文末的 【原文链接】 即可查看原文。自备梯子


这份报告是根据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也是位列第一。

640.png


JavaScript开发者的总数量是很难计算的。 Slashdata’s 2018 survey 报告指出,2017年末,JavaScript开发者数量为970万,并且在高速增长。这意味着当前至少已经有1000万开发者了。npm已经有超过1000万用户了,同样在高速增长。不过一部分开发者仍然还没使用过npm,不过这部分开发者的占比很小,估计小于10%。


NPM促进了JavaScript的流行


JavaScript是唯一可以开发web应用的语言,毫无疑问,JavaScript的流行与这一点是分不开的。不过,根据伯克利大学的这篇文章来看,拥有丰富的开源库,是开发者在选择一门开发语言时,最重要的因素。


640.jpg


我们自己的调查也支持了这个结论。开发者选择JavaScript最常见的原因是可用库的数量。


640.jpg

npm拥有超过836,000个可用的开源库,是目前世界上最大的开源库集合。不过,JavaScript更多的是小型库,数量多也是情有可原的。这么巨大的开源代码量,也表明了JavaSciprt和npm的流行是相互促进的。

640.jpg

npm被用来构建各种应用


我们询问了开发者,他们写的JavaScript运行在哪里。93%的人回答他们用来开发web, 70%的人表示他们在服务端使用JavaScript,例如Node.js。当然,还有其他的领域:物联网、桌面应用、端应用等等。

640.jpg


这对于在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用户特征


我们调查对象的基本特征在之前发布的报告中涵盖了。但有一些事实需要注意。

1.很多新人。25%的开发人员使用JavaScript不到两年,51%的人使用npm不到两年。这是社区不断壮大的副作用。


2.大部分是自学的。69%的npm用户是自学的JavaScript,22%的人是在工作中学习的。

640.jpg


3.不仅仅使用JavaScirpt。npm的使用者并不都是严格的JavaScript开发者 —— 30%的人还使用Java,30%还使用PHP,30%使用Python,还有其他的一些语言。

4.并不在科技公司工作。55%的npm使用者表示他们并不在一个可以被称为【科技】公司的地方工作。


同时,在某些方面,npm用户与软件开发人员并没有什么不同,这本身是很有意思的事情。比如,npm使用者在各种规模的公司工作,与这些公司的分布比例大致相同。JavaScript并不是一个'"大公司技术"或"小公司技术"。npm用户分布在各个行业,也有着不用的年龄段以及受教育程度。


每个人都希望少用工具


2018年的JavaScript,在某种程度上是令人诟病的。因为你需要引入很多的工具才能让代码跑起来。这和2014年的情况是相反的。2014年的时候,Node.js被认为是一个 "包含所有" 的框架。今天,绝大多数的开发者根本不会把Node.js当做一个框架。诚然,我们所有的被调查者都希望使用更少的工具,更少的配置就能开始开发,也希望看到更完善的文档。那么,他们喜欢的是什么样的工具呢?


今年初,我们深入调查了各种JavaScript框架的流行度,报告在这里part1、part2、part3。我们不会在这里复述所有的分析结果,但我们可以一起来看看从过去的9个月都发生了些什么。


React的增长放缓了

640.jpg


React继续统治web榜。在npm的调查中,超过60%的受访者表示他们正在使用React。这个比例比年初时已经有不小增长。但是,React在2018年的增长速度较2017年已经放缓了。


Angular的下载量保持平稳


640.jpg

两种最主要的Angular版本结合起来,在时长份额方面基本保持不变。


Ember的流行程度反弹了

640.jpg


一个非常不寻常的现象,Ember的受欢迎程度本来在下降,但却迎来了强劲的反弹。到9月份,使用Ember的开发者人数已经比年初时的两倍还多。我们将继续关注这个情况。我们认为,Ember的反弹是React增长放缓的原因之一。


Vue继续强劲增长

640.jpg


Vue在2018年继续强劲增长。许多Vue的使用者表示,他们之所以放弃React选用Vue,是因为Vue在保持扩展性的同时,比较容易上手。目前我们的观点是:许多新用户选择使用Vue,导致了React的增长放缓。


GraphQL持续高速增长

640.jpg


GraphQL,根据其最受欢迎的客户端库Apollo来看,正在变得越来越受欢迎。我们认为它将在2019年成为新的热门技术。


编译依然由Babel领衔,不过有一个惊喜 - TypeScript

640.jpg


所有的React使用者来说,Babel并不陌生,它被用来将React下一代的JavaScript转换成现在的语法标准。React占据了60%的市场份额,而65%的npm使用者正在使用Babel(Babel也在React的生态之外被使用).


令人略有意外的是,46%的受访者表示他们正在使用微软的带有类型检查的JavaScript - TypeScript. TypeScript的大量使用,也许预示着开发者书写JavaScript的方式将彻底改变。我们将在下一次的调查中,更多关注TypeScirpt的使用情况。


npm对于2019年的预测


JavaScript拥有一个巨大,多变,快速发展的生态,对其进行预测是困难的。但是我们的数据可以使我们对2019年进行一定的预测。


1.你将会放弃你现在使用的工具。JavaScript的框架和工具更新很快。框架的平均流行周期是3-5年。随着人们都在维护遗留的应用程序,框架的流行程度渐渐衰退。当人们开始新的工作时,他们将使用新的框架。做好准备学习使用新的框架吧,不要死抓住你现在的工具不放。


2.尽管增速放缓,React在2019年仍将是最有统治地位的框架。60%的web框架时长份额是前所未有的,部分原因是:React并不是一个完整的框架,而只是其中的一部分。这使得React可以在更多场景灵活使用。2019年,更多的人会使用React来开发web应用,这将为React在教程、建议以及Bug修复上带来优势。


3.你需要学习GraphQL。在生产环境中使用GraphQL或许过早了,特别是在你的Api都已经完成的情况下。但是2019年,你应该有意识的接触GraphQL的概念了。当你在2019年末、2020年参与新项目时,这将是你使用GraphQL的好机会。


4.你们组的同事将会引入TypeScript。46%的使用率表示TypeScript不仅仅是一个发烧友的工具。人们是真正体会到了类型检查提供的安全性所带来的好处。特别的,当你身处一个大组时,考虑在2019年使用TypeScript吧。


保持淡定


我们可以十分确信的做出预测:社区将会继续高速发展,JavaScript将会拥有很多的能力。随着它的增长,我们将记录新的趋势,并与社区分享我们的见解。你可以订阅我们的周报,在twitter上关注我们,以了解最新的行业动态。


写在后面:


本文一句一句的翻译了NPM官方的一篇报告,讲述了2018年里JavaScript的表现以及对2019年的预测,符合预期。

相关文章
|
5月前
|
JavaScript 前端开发
写了一个javaScript数据类型判断的工具(npm--genius-type)
写了一个javaScript数据类型判断的工具(npm--genius-type)
|
5月前
|
JavaScript
node.js 项目中执行 npm install 命令后看到的 idealTree inflate 的含义
node.js 项目中执行 npm install 命令后看到的 idealTree inflate 的含义
|
5月前
|
JSON JavaScript 数据格式
NPM 发包 js 文件并支持 ts 使用(包含 gulp 打包压缩)
NPM 发包 js 文件并支持 ts 使用(包含 gulp 打包压缩)
122 0
npm install 报错 npm ERR! puppeteer@1.20.0 install: `node install.js`
npm install 报错 npm ERR! puppeteer@1.20.0 install: `node install.js`
322 0
|
11月前
|
小程序
小程序wepy踩坑-Cannot find module 'D:\node_modules\npm\bin\npm-cli.js'
小程序wepy踩坑-Cannot find module 'D:\node_modules\npm\bin\npm-cli.js'
220 0
|
5月前
|
资源调度 JavaScript Linux
nvm, node.js, npm, yarn 安装配置
nvm, node.js, npm, yarn 安装配置
269 1
|
2月前
|
缓存 JavaScript 前端开发
成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】
这篇文章介绍了如何解决npm版本与Node.js版本不兼容的问题,提供了查看当前npm和Node.js版本的步骤,以及如何根据Node.js版本选择合适的npm版本并进行升级的详细指导。
成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】
|
2月前
|
JavaScript
【Deepin 20系统】Jupyter notebook解决ValueError: Please install Node.js and npm before continuing installa
文章讨论了在Deepin 20系统上安装Jupyter Notebook的debug插件时出现的"ValueError: Please install Node.js and npm before continuing installation"错误,并提供了使用conda安装Node.js的解决方法。
104 1
|
3月前
[已解决]npm淘宝镜像最新官方指引(2023.08.31)
[已解决]npm淘宝镜像最新官方指引(2023.08.31)
2457 0
|
3月前
|
JavaScript
TS,编写TS文件,编写hello.ts文件,cmd下打开终端,输入tsc hello.ts会生成一个hello.js文件,简化命令,npm i -g ts-node,ts-node hello.ts
TS,编写TS文件,编写hello.ts文件,cmd下打开终端,输入tsc hello.ts会生成一个hello.js文件,简化命令,npm i -g ts-node,ts-node hello.ts

推荐镜像

更多