导读:本次调查由阿里巴巴、腾讯等公司领衔,调查时间从 2020 年 2 月至 4 月,以中文进行。截止至 4 月 10 日共有 1113 名受访者参加调研。本报告将从 Nodejs 开发者人群、应用场景、开发场景等多个维度分析当下 Nodejs 开发生态的现状。

更好的阅读体验:更高清的数据图表和交互体验可以点击阅读原文跳转至相关 GitHub 页面查看。

受访者
人物来源

本次调查问卷中,填写问卷的 Node.js 开发者主要年龄分布如下:

他们的主要分布情况为:

其中以城市角度看,人数分布主要是:

职业简历

典型的受访者来自两种公司,分别是百人左右的小型公司,以及 5k 人以上的大公司。
他们通常是 7 人左右的团队内的前端或者全栈工程师。

工作内容
应用场景

Node.js 的典型应用场景是网站开发。
大公司内会有更多的人使用 Node.js 进行工具 & 自动化开发。
中小公司会更乐意在移动应用中尝试 Node.js。
不少人 (35.01%) 学习 Node.js 是出于业余爱好,在小公司更加明显。

开发场景

整体而言有 87.50% 使用 Node.js 开发服务端 API,有 51.19% 的人开发 CLI & 工具。
随着使用年限增加将 Node.js 作为服务端 API 的比率略有下降 (5%) 而 BFF 的使用场景略有上涨 (4%)。
越年轻的使用者越愿意在 SSR 场景中使用 Node.js。

多语言

与 Node.js 开发最契合的是前端开发语言(JavaScript/HTML/CSS)。
除了前端,整体上与 Node.js 最常见并存的语言分别是 Java(25.27%)、Python(22.24%) 和 Go(17.73%)。

开发流程
代码转译

随着 Node.js 使用年限增加,不转译的比率大幅下降 (45% 到 25%)。
TypeScript 是最常用的转译语言。

代码检查

整体上有 90% 的 Node.js 开发者使用过 ESLint。
随着团队规模的增大 TSLint 的使用存在微小的增幅。

配置方式

文件配置是最流行的配置方式。
虽然配置中心使用概率不高,不过公司规模越大则配置中心的使用概率越高。

编辑器

VS Code 一骑绝尘,是 Node.js 开发者最喜爱开发工具

进程管理

公司越大使用 Docker 的比例越高。
中型公司使用 PM2 的比例更高。

操作系统

技术栈
一个典型的 Node.js Web 应用:

使用 Express/Koa 框架
使用 Mysql/MongoDB + Redis 数据
同时配置了 Nginx 作为反向代理
Web 框架

虽然感受上 Koa.js 的教程更多,但是实际上 Express.js 依旧是最常见的框架。
除了 Koa/Express 之外较流行的 Web 框架分别有 Egg.js (38%)、Nest.js (15%)、Next.js (7%) 和 Midway.js (6%)。

数据库

在 2020 年,如果要学三个数据库,那么请学习 MySQL (79%)、MongoDB (60%) 和 Redis (49%)。

反向代理

Noder 们对于反向代理的概念是约等于 Nginx 的。
使用反向代理的基本都会使用 Nginx。
越大的公司越倾向于使用反向代理。

RPC

HTTP 是最常见的 RPC 方式,此外使用最多的是消息队列。
中型公司使用消息队列的比率最高。
大公司使用自研 RPC 协议的比率最高。

消息队列

常用的消息队列(多选) 仅 18% 的同学填写消息队列(问卷星渠道不包括)

开发生态
Node 版本

在 2020 年,开发者们普遍使用 12.x 或更高版本 13.x。
除了 NPM, 最流行的管理工具主要是 yarn 以及 cnpm。
仅有不到 6% 的开发者在使用非 LTS 版本的 Node.js。

依赖管理

NPM 影响力巨大,仅有不到 6% 的同学可以摆脱 NPM 只使用其他的依赖管理工具。
除了 NPM, 最流行的管理工具主要是 yarn 以及 cnpm。
随着开发经验的增加,开发者会更多的试图寻找 NPM 以外的依赖管理工具。

NPM 镜像

使用镜像加速的同学超过 57%,但是这对 NPM 的下载速度并没有起到决定性的影响。
通过比例分析可以发现,除了镜像加速,下载速度越快的同学中公司部署私有 NPM 镜像的比例越高。

学习提升
学习途径

老司机更多的从开源代码 (Github & NPM) 来学习 Node.js。
新同学相比之下会更多的通过学习视频以及博客 & 期刊等渠道学习。

使用困惑

Node 开发者使用困惑的前三分别是性能优化 (58%)、内存泄漏 (42.4%) 以及 Debug (24.89%)。
新人更容易面临的困惑前三分别是 异步编程、事件驱动以及 Debug。
随着开发经验的增加,内存泄漏的比例也逐步上升。

资源需求

文档是大家最期待的资源。
新同学对视频教程和免费在线课程的呼声最高。
随着开发经验的增加,开发更加关注文档、大会活动以及线下沙龙。

未来关键字

Serverless 和多线程是 2020 年的 Noder 们最关注的新关键字。
从业经验越高则越关注 WebAssembly (WASI) 和 N-API。
越年轻的同学越关注 Deno。

生态期望

Node.js 开发者中呼声最高的需求是更好的性能以及开发效率。
此外不满 1 年的开发者更关心学习成本,年限越长越关心维护成本。

2020 年 Node.js 开发者调查报告相关推荐

  1. Node.js 开发者 2020 年度报告

    大家好,我是若川.欢迎加我微信 ruochuan12,长期交流学习.今天分享一篇Node.js报告,记得当时我还参与填写这个调查问卷了,Node.js的重要性不言而喻.微信预计阅读只需7分钟.点击下方 ...

  2. 2020年最新开发者调查报告,你不可不知的内容

    StackOverflow发布了2020年开发者调查报告,此次有65000名开发者参与了调查,比较可惜的是中国参与的开发者却很少.不过这份报告也大概体现了目前全球开发者的情况了,下面我们来看看具体的报 ...

  3. 月薪集中在8k-17k、厌倦大小周、近三成的人没有跳槽过,中国开发者调查报告发布

    作者 | 屠敏 出品 | CSDN(ID:CSDNnews) 「学不完的技术,跟不动的技术潮流」,过去一年,随着数字化.智能化趋势的来临,无论是传统的工具.开发者的习惯,还是进入"快速路&q ...

  4. ​Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉

    来源:机器之心本文约2100字,建议阅读8分钟 当前最受开发者喜爱的编程语言是 Rust 语言,而 Python 的受喜爱程度仅位居第六. 在最近出炉的 Stack Overflow 全球开发者调查报 ...

  5. 年度大片:StackOverflow 2017开发者调查报告

    Stack Overflow 发布了 2017 开发者调查报告,此次有超过 64,000 名开发人员参与调查,分别对其技能.工具.学习趋势等数据进行了统计,现将其中一些有趣的数据和趋势撷取出来分享给大 ...

  6. Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉

    111在最近出炉的 Stack Overflow 全球开发者调查报告中,Rust 成为最受开发者喜爱的编程语言,Python 语言受开发者喜爱程度仅排第六.但是,备受好评的 Rust 语言也面临着「好 ...

  7. Rust 最受喜爱却少有人用,Python 仅排第六,2021 全球开发者调查报告出炉

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 在最近出炉的 Stack Overflow 全球开发者调查报告中,Rust 成为最受开发者喜爱的编程语言,Pyth ...

  8. Java老矣,尚能饭否?——Stack Overflow 2018 开发者调查报告出炉

    原文:地址 Stack Overflow作为全球最大的程序设计领域的问答网站,每年都会出据一份开发者调查报告.近日,Stack Overflow公布了其第八次年度开发者调查报告(https://ins ...

  9. Stack Overflow Developer Survey 2016 Results(2016stack overflow 开发者调查报告)

    Overview总览 This year, over fifty thousand developers shared where they work, what they build, and wh ...

最新文章

  1. 理解、学习与使用Java中的Optional
  2. java垃圾回收根对象_Java垃圾回收怎么理解?
  3. IOS FRAMEWORK,动态库 等几个问题
  4. 具体解释VB中连接access数据库的几种方法
  5. POE以太网交换机产品优势介绍
  6. 云海再获中国第一 OpenStack社区Xena版本新特性快来划重点
  7. Webstorm 下的Angular2.0开发之路
  8. 修改文件名与删除文件
  9. c语言gets,getc,C语言的getc()函数和gets()函数的使用对比
  10. PS如何进行自定义画笔
  11. 整理一下第一次参加华为大数据挑战赛自己的一些收获吧(正式赛篇阶段一)
  12. 对swift开发中的unwinding segue的一些理解
  13. 用这几种方式清理Mac缓存,你的Mac就不会卡了
  14. android 经纬度的格式,的Android如何转换经纬度成度格式
  15. 有限域f9的特征是多少_机械公差f9的上下偏差各是多少啊?
  16. ubuntu 查询uuid_ubuntu
  17. php scada,科远风场SCADA系统的应用
  18. React16版本更新的新特性
  19. uip+freemodbus网络通信
  20. CSU-ACM2017暑假集训比赛1 B - R2D2 and Droid Army

热门文章

  1. C++中逗号操作符的重载
  2. python中可变参数和关键字参数_python的可变参数和关键字参数(*args **kw)
  3. 中石油2018年秋季C语言 试卷答案,[石油华东]《数据采集系统》2018年秋季学期在线作业...
  4. python随机发牌_魔术师发牌问题 -- python实现
  5. ubuntu 安装 talib
  6. html左侧分级导航,jquery实现无限分级横向导航菜单的方法
  7. python 爬虫输出为空,python爬取文件时,内容为空
  8. 41. Leetcode 662. 二叉树最大宽度 (二叉树-二叉树性质)
  9. pytorch笔记——简易回归问题
  10. 数据结构常见算法原理讲解100篇(一)-递归和分治算法原理及案例应用