阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

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

关注

评论 1 条评论

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

大厂算法面试之leetcode精讲10.递归&分治

全栈潇晨

LeetCode 算法面试

Perforce用户文章转载:每个游戏从业者都应该学学P4

龙智—DevSecOps解决方案

版本控制 游戏开发 版本管理 perforce 游戏厂商

一些常用的hive sql函数

编程江湖

大数据 hive Hive SQL

Java开发中常用的消息队列工具 ActiveMQ

编程江湖

Activemq Java 开发

react源码解析3.react源码架构

buchila11

源码 React React Hooks react源码

内存数据库的分布式架构提升之道

鲸品堂

数据库

前端开发之JavaScript优化

@零度

JavaScript 大前端

Google I/O 2021 What's new in Android Machine Learning

CatTalk

机器学习 tensorflow android Google

如何在P4中管理Unreal Engine 代码

龙智—DevSecOps解决方案

版本控制 游戏开发 版本管理 游戏引擎 虚幻引擎

Rainbond通过插件整合SkyWalking,实现APM即插即用

北京好雨科技有限公司

Kubernetes 云原生 全链路追踪

一文讲透一致性哈希的原理和实现

万俊峰Kevin

微服务 高并发 哈希算法 go-zero Go 语言

直播预告|数以智用——大数据应用探索与实践

智联卓聘

大数据 数据管理 线上沙龙

PackML从会到不会——状态机(1)

陈的错题集

标准化 PackML

java开发之DOS命令学习及运行环境配置安装

@零度

java开发学习 DOS命令学习

数仓开发详细剖析

五分钟学大数据

11月日更

大批量更新数据mysql批量更新的四种方法

大数据技术指南

11月日更

dart系列之:时间你慢点走,我要在dart中抓住你

程序那些事

flutter 架构 dart 程序那些事 11月日更

Linux学习方法《Linux一学就会》Centos8软件包的管理与安装

侠盗安全

Linux linux运维 运维工程师 云计算架构师

如何使用 Java 代码给图片增加倒影效果

Jerry Wang

Java API 图片处理 11月日更 Java图片

博文推荐|深入解析 Apache Pulsar 中的事务

Apache Pulsar

大数据 架构 分布式 云原生 Apache Pulsar

处理可能超时的异步操作

编程江湖

大前端

爱奇艺TFServing负载均衡问题研究及改进实践

爱奇艺技术产品团队

Python量化数据仓库搭建系列2:Python操作数据库

恒生LIGHT云社区

Python 量化

并发编程中,你加的锁未必安全

华为云开发者联盟

线程 高并发 并发 线程安全

百度商业大规模高性能全息日志检索技术揭秘

百度Geek说

软件架构

万字讲解WiFi为何物

华为云开发者联盟

wifi 物联网 无线通信 传输 无线

服务API版本控制设计与实践

vivo互联网技术

API 服务器端开发 客户端开发 迭代

Elasticsearch云生态下的开源共生之路

大咖说

云计算 elasticsearch 开源

移动计算云分布式数据缓存服务,实现快速可靠的跨区域多活复制

华为云开发者联盟

可用性 云数据缓存 跨区域多活 无冲突复制数据类型CRDT

react源码解析4.源码目录结构和调试

buchila11

React React Hooks

测试不趁早,“持续测试”搞不好

SoFlu软件机器人

DevOps 敏捷开发 自动化测试

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