春争日,夏争时,扫码抽取夏日礼包!!! 了解详情
写点什么

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

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

关注

评论 1 条评论

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

极客大学第一周作业

方堃

极客大学架构师训练营

枚举

小王同学

食堂就餐卡管理系统设计

eric

架构

极客李

架构师0期第一周作业

我在终点等你

200行代码理解 RxJS 的核心概念

局外人

Java 大前端

架构师训练营-第一周作业

Eric

极客大学架构师训练营

架构师训练营0期第一周学习总结

小高

一行代码引来的安全漏洞就让我们丢失了整个服务器的控制权

程序猿石头

Spring Boot 网络安全 后端 前后端分离

架构师训练营week1

devfan

从零搭建一个Electron应用

局外人

Java 大前端 Electron

UML示例

Geek_196d0f

架构师训练营 - 第一周作业一

teslə

第一周学习笔记

方堃

学习 极客大学架构师训练营

「架构师训练营」第1周命题作业

牛牛

极客大学架构师训练营 第一周命题作业

架构师训练营第一周总结

olderwei

极客大学架构师训练营

第一周学习笔记

远方

架构师训练营第一周 个人心得

yanghao

第 1 周作业 - 食堂就餐卡系统设计

WW

【架构师训练营】第一周课程总结

张明森

就餐系统

远方

架构师训练营 第一周 学习心得

LiJun

学习 极客大学架构师训练营

week01 学习总结-架构设计文档

Z冰红茶

食堂就餐卡系统总结

薛定谔的🐴

极客大学架构师训练营 UML

食堂就餐卡系统设计

Geek_zhangjian

食堂就餐卡系统设计

allen

架构师训练营-第一周学习总结

Eric

极客大学架构师训练营

食堂就餐卡系统设计

Dennis

架构的理解-不只是技术问题

旭东(Frank)

学习 极客大学架构师训练营

第 1 周作业 - 学习总结

WW

本周总结

Geek_zhangjian

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