写点什么

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:012081
用户头像

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

关注

评论 1 条评论

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

跨平台应用开发进阶(三十一) :uni-app实现覆盖原生控件导航栏和tabbar全屏弹窗

No Silver Bullet

uni-app 跨平台应用 12月月更 原生控件覆盖 全屏弹窗

如何使用轮播图在小程序内实现水平内容自动切换?

Towify

小程序 微信小程序 无代码 轮播图

可观测落地实践-从战略管理到工具落地

嘉为蓝鲸

可观测 自动化运维 嘉为蓝鲸

小游戏未来将在技术侧如何发展

Onegun

小游戏 小游戏开发

8000字详解Thread Pool Executor

华为云开发者联盟

Java 开发 华为云 12 月 PK 榜

YonBuilder移动开发平台AVM框架封装数据表格组件

YonBuilder低代码开发平台

开发者 前端 AVM

港华燃气上线WeOps推动运维效能提升,托举业务智慧运行!

嘉为蓝鲸

运维 自动化运维 嘉为蓝鲸 #WeOps

培训班学习完后就业前景怎么样

小谷哥

从源码层面深度剖析Spring循环依赖

京东科技开发者

spring 缓存 循环依赖 spring MV @Bean

如何用3D流体实现逼真水流效果?

HarmonyOS SDK

HMS Core

直播预约|阿里云EMR 2.0 重磅发布

阿里云大数据AI技术

大数据 阿里云 大数据 开源

推荐8个提高工作效率的IntelliJ插件

JAVA旭阳

Java IDEA

如何制作一个实时在线显示评论?

Towify

微信小程序 编辑器 无代码

无效回表谁的锅?存储引擎:这事儿不赖我

小小怪下士

Java MySQL 程序员

数据库原理及MySQL应用 | 实体联系模型

TiAmo

数据库 :MySQL 数据库 12月月更

汽车行业:充分借力数据价值,推动数字化营销链路闭环

HarmonyOS SDK

HMS Core

教你如何轻松搞定云上打印管理

华为云开发者联盟

云计算 华为云 12 月 PK 榜 云打印

双旦来临,贾斯特里尼&布鲁克斯红酒为您多添一份情调

联营汇聚

培训班出来的前端和自学的优势

小谷哥

贾斯特里尼&布鲁克斯葡萄酒,佳节送礼首选

联营汇聚

HarmonyOS 3优化游戏续航,nova 6等老机型升级后游戏续航更持久

Geek_2d6073

YonBuilder移动开发平台 AVM框架 数字滚动组件

YonBuilder低代码开发平台

开发者 前端 avm.js AVM

跨平台应用开发进阶(三十):uni-app 实现集成火山视频直播服务

No Silver Bullet

uni-app 12月月更 服务集成 火山视频直播服务

嘉为蓝鲸受邀出席汽车新智造数字行业峰会,助力构建数字时代竞争力!

嘉为蓝鲸

数字时代 自动化运维 嘉为蓝鲸

手把手教你成为荣耀开发者:如何获取平台帮助及最新通知?

荣耀开发者服务平台

开发者 安卓 平台赋能 数智创新 honor 技术支持

跨平台应用开发进阶(三十二) :AK/SK鉴权原理简介

No Silver Bullet

uni-app 12月月更 AK/SK鉴权

云原生时代的灰度发布有几种“姿势”?

嘉为蓝鲸

灰度发布 自动化运维 嘉为蓝鲸

什么是 Redis 持久化,如何理解?

千锋IT教育

Redis 6.0

ArkUI,更高效的框架设计

HarmonyOS开发者

HarmonyOS

Wallys//AX200NGW,adapter card with one M.2 slot/DR2g41 Linux,WiFi-modules,4-miniPCIE-slot

wallysSK

AX200NGW

什么是低代码?低代码平台能解决什么样的问题?

优秀

低代码 低代码平台

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