【QCon】精华内容上线85%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

NPM 2018 年回顾与 2019 年预测

  • 2018-12-11
  • 本文字数:3238 字

    阅读完需:约 11 分钟

NPM 2018年回顾与2019年预测

近日,npm 发布了 2018 年 npm 上的一些数据,以及对 2019 年的 JavaScript 生态圈进行了预测。数据显示,npm 每月有超过 1000 万个用户进行超过 300 亿次的下载。在某个周二,也就是 npm 最繁忙的一天,用户下载 JavaScript 包的次数超过 13 亿。


除了这些数据之外,今年,npm 还与 Node.js 基金会和 JS 基金会合作,对超过 16000 名开发人员进行问卷调查,了解他们的最新动态,这将有助开发者在 2019 年更好地做出技术选择,目前这份调查报告还尚未发布。

JavaScript 是最流行的编程语言

JavaScript 越来越受欢迎,这已经不是什么新鲜事了。Stack Overflow的2018年开发人员调查报告已经将 JavaScript 视为当下最流行的编程语言(HTML 和 CSS 分列第 2 和第 3 位)。GitHub 最新的 Octoverse 信息图根据拉取请求的数量对编程语言进行排名,JavaScript 也是最高的。



JavaScript 开发者的总数很难估计。Slashdata 的 2018 年调查报告显示,到 2017 年底有 970 万人,而且增长速度很快,这意味着到目前可能有超过 1000 万人。根据 npm 自己的估算,npm 用户可能已经超过 1000 万。有些 JavaScript 开发者尚未使用 npm,但这部分开发者的比例较小,可能不到 10%。

npm Registry 促进了 JS 的普及

毫无疑问,JavaScript 的普及是因为它作为唯一一门可直接用于开发 Web 应用程序的编程语言。不过,Berkeley 实验室的 Leo Meyerovich 和 Ariel Rabkin 对有助于编程语言采用的因素进行了研究,并发表了一篇论文,论文中提到,总的来说与手头任务相关的开源库的可用性才是选择编程语言的最重要因素。



npm 的调查数据与上述两位学者的观点基本吻合。受访者选择 JavaScript 的最常见原因是可用库的数量。



npm 目前拥有超过 836,000 个库,是世界上最大的开源库集合。虽然 JavaScript 的库通常都很小,这意味着这种比较并不完全具有同等意义,但不管怎样,这个庞大的开源代码库意味着 JavaScript 和 npm 的流行是相互作用的:编程语言因为 Registry 而受欢迎,反过来也是。


npm 被用于构建各种应用程序

问卷调查中有一个问题是 JavaScript 开发者在哪些地方会用到 JavaScript。93%的受访者表示他们使用 JavaScript 开发 Web 应用程序,仍然有 70%的受访者表示他们编写的是运行在服务器端的 JavaScript,即 Node.js。不过,包括物联网(IoT)、桌面应用程序、原生移动应用程序在内的很多其他应用领域也有大量 JavaScript 用户。



对于我们这些在 npm 工作并维护 npm 命令行工具的人来说,这是一个重大变化。npm 的初衷是为了满足服务器端应用程序开发者的需求,而 Web 开发者的需求是不一样的。转变成为以 Web 为主的平台意味着我们需要改变优先级,于是有了包锁定(package locking)等新功能。

npm 对于 Web 开发来说至关重要

在 2014 年 npm 刚成立时,一些树通常只包含几十个 JavaScript 包。而到了现在,普通的现代 Web 应用程序通常会有 1000 多个模块,包含超过 2000 个模块的树也并不少见。实际上,现代 Web 应用程序中有 97%的代码来自 npm。一个开发者只负责最终的 3%代码,它们是应用程序独有的代码。


从代码重用方面来看,这是一个巨大的成功。数千个模块不需要重新发明轮子,为数百万开发者节省了数亿个小时的编码时间。

2018 年,npm 专注于安全

对于很多开发者来说,npm 已经成为构建网站的一种方式。在我们的调查中,77%的开发者表示他们担心他们所使用的开源库的质量和安全,而其中有 52%的开发者表示目前缺少可用的安全工具。


4 月份,npm 宣布收购 Lift Security 及其产品 Node Security Platform(NSP)。现在,NSP 直接被集成到 npm 中,每次 npm 安装都会进行安全审计,通知用户他们是否正在安装不安全的模块。npm 还提供了工具,通过自动安装安全的模块来修正这些漏洞。此外,npm 企业版和付费的 npm 企业用户会收到尚未被公开的漏洞通知。

npm 用户的分布情况

  1. npm 用户大多数是新手。25%的人使用 JavaScript 的时间不到 2 年,51%的人使用 npm 的时间不到 2 年。

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



这些开发者不只是编写 JavaScript 代码。使用 npm 的人并不总是严格意义上的 JavaScript 开发者——Java、PHP 和 Python 开发者占了 30%,还有少部分其他语言的开发者。


他们不在“科技”公司工作。55%的 npm 用户称自己是在不被视为“技术”公司的公司工作。


在某些方面,npm 用户与一般软件开发者没有区别,这本身就很有趣。例如,npm 用户在各种规模的公司工作,与这些公司存在的比例大致相同。JavaScript 并不是只有“大公司”或“小公司”才会采用的技术。npm 用户平均分布在每个行业,在年龄和教育水平等方面的分布也比较平均。

人们希望能够简化工具

2018 年的 JavaScript 开发需要使用大量的工具,这一点来说显得有点臭名昭著,这与 2014 年的情况完全相反,当时 Node.js 被认为是一个“包含一切”的框架。而到了现在,大多数开发者根本不会将 Node 视为一个框架。所有的受访者都希望工具能够得到简化,配置项更少一些,并提供更好的文档。


读者有必要了解一下我们的“Registry 份额”指标:“平面”图表示强劲的增长,但不是相对于 Registry 的增长,因为 Registry 总是增长得非常快。

React 的增长放缓


React 继续主宰 Web 开发领域。超过 60%的受访者表示他们正在使用 React。不过,2018 年的增长速度低于 2017 年。

Angular 的下载量趋于平稳


Angular 的市场份额基本保持不变。

Ember 的受欢迎程度有所回升


Ember 的受欢迎程度先是下降,然后强劲反弹,这是一个非常不寻常的现象。截至今年 9 月,使用 Ember 的开发者数量是年初的两倍多。npm 将密切关注这个现象,不过 npm 认为,Ember 的复苏可以用来解释为什么 React 增长放缓。

Vue 继续强劲增长


Vue 增长迅速,增长势头在 2018 年继续。很多 Vue 用户说他们之所以选择 Vue 而不是 React,是因为他们认为在保持可扩展性的同时更容易上手。npm 认为,React 的增长速度放缓是因为很多新用户选择了 Vue。

GraphQL 继续高速增长


GraphQL 的受欢迎程度继续爆棚,npm 认为它将成为 2019 年的一股强大的技术力量。

Babel 和 TypeScript


React 用户对 Babel 都很熟悉,他们用它将 React 的下一代 JavaScript 转换为当前受支持的 JavaScript。65%的 npm 用户表示在使用 Babel,与 React 的 60%市场份额几乎保持一致。


不过,令人感到惊讶的是 TypeScript,46%的受访者表示他们使用微软的 TypeScript,可能标志着开发者编写 JavaScript 的方式发生了巨大变化。npm 表示他们肯定会在下一版本的问卷调查中问到更多有关 TypeScript 的使用情况。

npm 对 2019 年的预测

对像 JavaScript 如此庞大、多变和快速变化的生态系统做出预测是很难的,不过基于 npm 的数据,我们还是能够对 2019 年做出一些具有一定说服力的预测。


1.你将放弃当前使用的某些工具。JavaScript 生态系统中的框架和工具不会长存。一般的框架具有 3 到 5 年的流行期,随后几年随着进入应用程序的进入维护期,框架的流行度缓慢下降,然后转向新的框架。所以,准备好学习新的框架,而不是紧紧地抓住当前的工具不放。


2.尽管增长放缓,React 仍然将成为 2019 年的主导框架。一个 Web 框架能够占据 60%的市场份额是闻所未闻的,部分原因是因为 React 不是一个完整的框架,它只是一个核心,因为可以灵活地覆盖更多的用例。2019 年,为了能够构建 Web 应用程序,更多人将使用 React,这将在教程、建议和错误修复方面带来巨大优势。


3.你需要学习 GraphQL。将 GraphQL 投入生产环境可能为时尚早,但 2019 年你应该要考虑了解 GraphQL 概念,因为很有可能在 2019 年晚些时候或 2020 年的新项目中使用它。


4.你的团队将会引入 TypeScript。46%的采用率意味着 TypeScript 不仅仅是爱好者的工具,它的类型安全将带来真正的价值,特别是如果你所在的团队是个大团队,那么请考虑在 2019 年的项目中采用 TypeScript。


英文原文:


https://blog.npmjs.org/post/180868064080/this-year-in-javascript-2018-in-review-and-npms


2018-12-11 10:011945
用户头像

发布了 731 篇内容, 共 431.3 次阅读, 收获喜欢 1996 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

海量数据拉升背后的成本困扰:存算分离成美图降本增效新良方

华为云开发者联盟

大数据 华为云 海量数据

你一定看得懂的Netty客户端启动源码分析!

Java 编程 Netty 架构师

深度解析物联网设备的区块链技术

CECBC

区块链 智能合约 物联网

华为云推UGO:一手抓结构迁移,一手抓SQL转换

华为云开发者联盟

架构师训练营第 1 期 第 1 周作业

李循律

腾讯架构师:亲手Debug之后,你就知道为何面试问源码了

小Q

Java tomcat 程序员 架构 调优

Java引入第三方包的路径问题

谷鱼

路径

nginx 实现接口版本控制

程序员与厨子

php nginx laravel 版本控制

从全备中恢复单库或单表,小心有坑!

Simon

MySQL MySQL 运维

阿里P8大牛的建议,工作1-5年的Java工程师如何让自己变得更值钱

Java架构之路

Java 编程 程序员 面试

c++杂谈-1

菜鸟小sailor 🐕

c++

一个线程池中的线程异常了,那么线程池会怎么处理这个线程?

Java架构师迁哥

flutter 高效开发工具集

Daniel

golang 表格编程降低圈复杂度

猴子胖胖

表格开发 Go 语言

区块链用于支付手段只是开端

CECBC

区块链 金融

时空碰撞优化系列·一

誓约·追光者

hive 数据分析 Sparksql 计算效率 优化

一个草根的日常杂碎(9月22日)

刘新吾

生活 随笔 记录

Java 回调(Callback)接口学习使用

魏杰

2020大厂面试一道高频Spring题,90%的Java开发者都拜倒在它脚下!

Java架构师迁哥

新疆采风笔记:送行·出发·火车上

刘新吾

随笔 旅行 新疆

揭示智能边缘重大机遇 英特尔邀产学研推动产业智能升级

E科讯

众盟科技2020智能化白皮书:穿越新商业周期,读懂商业智能化的真义

脑极体

救人于无形的“环境智能”,到底是一种什么智能?

脑极体

“大数据+区块链”的智慧城市建设!

CECBC

区块链 大数据

支付平台架构技术实现之终端安全

博文视点Broadview

架构 安全攻防 安全 支付系统 风控

分布式系统实践解读丨详解高内聚低耦合

华为云开发者联盟

(2)skynet ubuntu下载与安装

休比

船长梁晓玲的猎鹰号真的能赚钱嘛?不分析不知道……

成周

心理学 船长梁晓玲 诈骗

2020年程序员必备的面试重点+面试真题+个人软实力,你学废了吗?

Java架构师迁哥

华为云IoT智简联接,开启物联世界新纪元

华为云开发者联盟

物联网

添加字幕哪个视频剪辑软件比较简单?

奈奈的杂社

视频创作 视频剪辑 视频后期 自媒体 后期字幕

NPM 2018年回顾与2019年预测_大前端_npm 博客_InfoQ精选文章