Node.js 2021年開發(fā)者報(bào)告解讀:健康穩(wěn)步的發(fā)展中
很多人覺得Node.js沒有往年那么火了,事實(shí)上不是這樣的,Node.js社區(qū)健康穩(wěn)步的發(fā)展中,主要是從性能好向好用轉(zhuǎn)變,在易用性上有很大提升,從Node.js源碼更新的內(nèi)容看,大抵如此。Node.js Diagnostics Working Group是近二年Node.js社區(qū)的重點(diǎn)工作組,Node.js 14版本之后的大部分功能特性都是這個(gè)工作組推動(dòng)的。早在2015年,有2個(gè)跟蹤工作組tracing WG 和事后分析工作組 postmortem WG,在2017年合并到Diagnostics WG。核心產(chǎn)出是async_hooks, profiling, tracing, dump debug, report等,都是在易用性和好用性上做提升。讓每個(gè)Node.js開發(fā)者更低門檻的提升Node.js應(yīng)用的開發(fā)體驗(yàn)。
秦粵老師在《浮華過后的Node.js》分享里,也表達(dá)了同樣觀點(diǎn),他用的是產(chǎn)品化平緩期,也是健康穩(wěn)步的發(fā)展的意思。
社區(qū)方面,Web框架已經(jīng)沒有多少空間,以特性取勝的框架,應(yīng)該不會(huì)很多,比較期待Egg3。像fastify這種,修改Node.js機(jī)制,在性能領(lǐng)域深耕的框架,目前看是比較有作為的。pnpm是有創(chuàng)新的,但代碼是有點(diǎn)可讀性不太好。我更加喜歡rushstack對menorepo的改進(jìn),大規(guī)模編程范式還需要探索。除了去年提的midway-hooks,easy-monitor,看起來remix和morden算新,但還沒有超出之前的范疇。
下面結(jié)合《Node.js開發(fā)者2021報(bào)告》內(nèi)容,我們詳細(xì)解讀一下Node.js 2021年的情況。這份解讀是根據(jù)冰森&狼叔直播內(nèi)容整理的,要點(diǎn)如下。
Node.js 開發(fā)者 2021 報(bào)告原文:https://nodersurvey.github.io/reporters/
或點(diǎn)擊閱讀原文直接查看。
1)開發(fā)框架變化較大,造輪子變少,TS變多,使用企業(yè)級框架變多
去年express占比還非常高,今年企業(yè)級框架變多,尤其是大而全的框架更受歡迎。
Egg在國內(nèi)普及率很高,而Midway和Nest增長較快,其實(shí)和TS普及有一定關(guān)系。
2)版本更新變化較大,從Node 12升級到Node 14,升級比較積極
去年Node.js主要是使用Node 12,2021年Node 14占比將近一半,更新還是較快的。
3)吐槽變多,意味著用的人變多,趨于成熟
C++之父Bjarne Stroustrup說過:世界上只有兩種編程語言,一種是整天被人罵的,還有一種是沒人用的。
大家對Node.js吐槽變多,實(shí)際上是在應(yīng)用場景上使用較多,不再是針對于某些特性而進(jìn)行吹捧?;貧w理性,在真實(shí)應(yīng)用場景上,分布廣泛,核心圍繞API和BFF層,CLI&工具。
4)出圈:年齡分布較去年比變大,使用工種也變得比較豐富。
除了應(yīng)用場景上,分布廣泛外,非前端以外的開發(fā)者相關(guān)角色也有很大比例的提升,比如架構(gòu)師,技術(shù)總監(jiān),項(xiàng)目經(jīng)理等都一定程度上使用Node.js??梢哉fNode.js走出了前端圈,面向更大群體提供服務(wù)。另外受訪者的年齡分布也變大了,這和出圈是有直接關(guān)系的。
5)使用困惑:性能優(yōu)化,內(nèi)存泄漏以及npm依賴
以往對Node.js困惑最多的是異步流程控制,隨著async/await的普及,這個(gè)問題已經(jīng)慢慢在弱化。隨著開發(fā)者使用Node.js深度增加,對性能優(yōu)化,內(nèi)存泄漏更為關(guān)注,這也是比較容易理解的。
6)未來:從業(yè)經(jīng)驗(yàn)越高則越關(guān)注性能和 Serverless
關(guān)注性能比較容易理解,關(guān)注Serverless最主要是的原因是Serverless可以做到低運(yùn)維甚至是0運(yùn)維。運(yùn)維作為Node.js開發(fā)者必備技能,Serverless的出現(xiàn)使得很多非專業(yè)Node.js也能輕松搞定Node.js各種服務(wù)端場景。