Node.js 开发者 2020 年度报告

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


本次调查以 Ecma 成员名义发起,阿里巴巴、腾讯等公司领衔。该调查事件从 2020 年 2 月至 2020 年 4 月,以中文进行。截止 4 月 10 日共有 1,113 名受访者参加。

报告的高清图表以及不同维度筛选交互,请点击阅读原文跳转到 GitHub page 页面查看。

受访者

人物来源

本次调查问卷中,填写问卷的 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 年的开发者更关心学习成本,年限越长越关心维护成本。

最后


同样的数据在不同的人眼里可以衍生出不同的看法,本报告内的解读仅供参考。同时欢迎社区同学对本报告进行解读和分析。

如果发现有疏漏或者有你自己的想法/吐槽都可以在 GitHub (https://github.com/NoderSurvey/reporters) 上提 issue 反馈。同时报告的高清图表以及不同维度筛选交互,请点击阅读原文跳转到 GitHub page 页面查看。


最近组建了一个江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你进群。



················· 若川出品 ·················

今日话题

前不久新加的今日话题这个栏目,虽然可能很多人没有看到这里,但我应该会坚持写下去。今天在群里得知有位读者朋友置顶了我的微信群而且星标了我的公众号,深感欣慰。

一个愿景是帮助5年内前端人走向前列的公众号

可加我个人微信 ruochuan12,长期交流学习

推荐阅读

我在阿里招前端,我该怎么帮你?(现在还能加我进模拟面试群)

如何拿下阿里巴巴 P6 的前端 Offer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视觉设计_视觉设计:

视觉设计What does the customer first see in your application? Yes, its your application design. So it is very important to pay attention to how the design is made. There’s so many factors to include, like how usually people meaning a symbol, how their pr…

开源分布式中间件 DBLE 快速入门指南

2019独角兽企业重金招聘Python工程师标准>>> 环境准备 DBLE项目资料 DBLE官方网站:https://opensource.actionsky.com 可以详细了解DBLE的背景和应用场景,本文不涉及到的细节都可在官方文档获得更细节都信息;对于刚了解到同学&…

文字输入限制_从拼音输入法的兴起看汉字文化圈的衰落

曾经韩国的报纸是这样的:现在的则是这样的:(上面两图均来自网络,如有侵权请告知)二战之后,曾经广泛使用汉字的朝韩跟越南都走上了废除汉字之路。日本虽然依然使用汉字,却也发布了《当用汉字表》…

跟各位读者朋友分享下公众号运营策略

大家好,我是若川。欢迎加我微信 ruochuan12,加群交流学习。目前我的公众号运营策略,分享给各位读者朋友。点击下方卡片关注我,或者查看源码等系列文章。可能大多数关注的人不知道,我的公众号取名为若川视野的原因。「若…

[轉載]用PHP的ob_start();控制您的浏览器cache!

FROM http://www.phpchina.com/html/28/1628-3870.html Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的…

oracle 带有变量的语句_【成都校区】Oracle SQL语句之常见优化方法总结

本帖出自于黑马程序员成都中心,更多资源可关注微信公众号1、SQL语句尽量用大写的;因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。2、使用表的别名: 当在SQL语句中连接多个表时, 尽量使用表的别名并把别名前缀于每…

js 获取上下文后面的路径_通过在数据后面显示上下文来可视化公众意见

js 获取上下文后面的路径In 1824, The Harrisburg Pennsylvanian, a newspaper from a town in Pennsylvania conducted the first known public opinion polls in history, and successfully predicted the result of the vote in the close race between Andrew Jackson and …

甘肃甘南步班邮递员:草原上的“递爱”艰途

图为甘肃甘南藏族自治州碌曲县郎木寺镇邮政支局的投递员进行投递工作。(资料图) 钟欣 摄 中新网兰州1月25日电 (吴玉蒿)渐近春节,刘权英投递邮件的工作愈加繁重。现年45岁的刘权英是甘肃甘南藏族自治州碌曲县郎木寺镇邮政支局的一名投递员。由…

看了就会的 Node.js 三大基础模块常用 API

大家好,我是若川。欢迎加我微信 ruochuan12,加群交流学习。今天分享一篇nodejs基础的文章。点击下方卡片关注我,或者查看源码等系列文章。在日常使用 Node 进行开发的时候,会使用到一些文件系统、路径操作等基础 API,这…

ios设计登录功能_亲爱的产品设计师,这是iOS 14的新功能

ios设计登录功能On June 22, 2020 Apple previewed iOS 14 for the first time. As always there are quite some changes you should know about as a product designer like widgets, pickers, app clips, permissions and more.2020年6月22日,Apple首次预览iOS 1…

c++ int 转 short_C/C++结构体内存对齐

在面试或工作中,经常会遇到内存对齐的问题。这里结合我的理解谈一谈对内存对齐的理解。1. 为什么要内存对齐,不对齐会怎么样?内存中存放数据是为了给CPU使用,CPU访问内存数据时会受到地址总线宽度的限制,也就是一次能从…

jakob slam_Jakob Nielsen针对用户界面设计的第二种可用性启发法

jakob slamIn the pursuit of providing great user experiences, it’s imperative that digital products are evaluated. A 为了提供出色的用户体验,必须对数字产品进行评估。 一个 heuristic evaluation is essential to delivering great user experiences. I…

微软Office 365正式上架Mac App Store

今天,Office 365正式在Mac App Store上架,Mac用户可以轻松下载Word,Outlook,Excel,PowerPoint,OneNote以及整套微软的热门应用程序。用户还可以从应用程序内订购Office 365。苹果全球开发者关系高级主管Sha…

一文搞懂浏览器原理

大家好,我是若川。最近这几年,云计算的普及和 HTML5 技术的快速发展,越来越多的应用转向了浏览器 / 服务器(B/S)架构,这种改变让浏览器的重要性与日俱增,视频、音频、游戏几大核心场景也都在逐渐…

dataframe中将一列数据切分成多列

为什么80%的码农都做不了架构师&#xff1f;>>> 原sheet中数据 目的 将【备注】列切分成【key】列和【value】列 Python sheet[key] sheet[备注].str.extract(r(_.*(?\u503c))) sheet[value] sheet[备注].str.extract(r((?<).*))结果 参考 pandas.Series.st…

matplotlib可视化_EDA:Geopandas,Matplotlib和Bokeh中的可视化

matplotlib可视化Nowadays, everyone is immersed with plenty of data from news sources, cellphones, laptops, workplaces, and so on. Data conveys with tons of information from different data variables like date, string, numeric, and geographical format. How t…

小技巧!CSS 整块文本溢出省略特性探究

大家好&#xff0c;我是若川。欢迎加我微信 ruochuan12&#xff0c;长期交流学习。今天的文章很有意思&#xff0c;讲一讲整块文本溢出省略打点的一些有意思的细节。点击下方卡片关注我&#xff0c;或者查看源码系列文章。文本超长打点我们都知道&#xff0c;到今天&#xff08…

寒假作业3:抓老鼠啊

7-1 抓老鼠啊~亏了还是赚了&#xff1f; &#xff08;20 分&#xff09; 某地老鼠成灾&#xff0c;现悬赏抓老鼠&#xff0c;每抓到一只奖励10元&#xff0c;于是开始跟老鼠斗智斗勇&#xff1a;每天在墙角可选择以下三个操作&#xff1a;放置一个带有一块奶酪的捕鼠夹(T)&…

笔记本移交_创建完美的设计移交

笔记本移交重点 (Top highlight)Design specifications (specs) are guidelines that developers will use to implement a design. Think of an architect providing building blueprints to the construction team. Many designers think of specs as mindless zombie work. …

大手笔,送¥1599的Apple AirPods Pro和独家礼物等

大家好&#xff0c;我是若川。为感谢公众号读者们长久以来的支持&#xff0c;本次我联合几位前端界大佬给大家送超级福利了。除了联合福利之外&#xff0c;每位前端大佬还带了专属礼品送给大家&#xff0c;所有抽奖均可重复参与、可重复中奖&#xff0c;详情见下文每个公众号的…