!非专业文章,文章大部分内容仅为原文章的译文,仅供参考。欢迎批评和指点!
Node.js前景概述
Stack Overflow 2020年开发者调查1的结果显示,Node.js在网页应用开发工具和框架(the most popular web framework for Web app development)荣登榜首,获得51.9%的投票率。2020年开始,越来越多的公司迅速转型Node.js,如雅虎、沃尔玛、Uber等。
选择Node.js的原因
Node.js帮助企业解决一系列生产过程中的问题和挑战,其中有一部分是平台相关的(platform-related),还有一部分与资源利用(resource utilization)有关。Netflix、Paypal、Linkedin等都表示Node.js可以节省60%以上的启动时间2。
下图是开发者对于Node.js对开发影响的统计数据。可以看到,大部分开发者认为Node.js能提高开发速度,减少开发支出,以及提升应用的性能。此外,22%的开发者认为使用了Node.js后更容易招聘到合适的员工,这说明Node.js比其他语言(如Java、PHP、.NET)更容易上手,相比于Java的Spring,更加轻量和简易。SIMFORM做了一个调查报告,列举了15家公司对Node.js的看法3。
Node.js 的优势
高性能的实时应用
Node.js的一大优势就是可以快速地构筑(build)应用并显示结果。Node.js之所以强大,是因为它以谷歌浏览器(Chrome’s V8)引擎为基础,并使用C++编写,它以超高的效率将函数编译为机器码。为了保证持续的提升,谷歌采用V8基准套件来保证更快的执行速度、更优秀的编译器、安全补丁和高可伸缩性(scalability),进而提升Node.js的性能。
更易伸缩的现代应用
前沿的技术带来数以千计的特性,如集群模块(cluster module)。它促进了多核CPU的负载均衡,使其通过更小的模块来实现需求变得更容易,且不会烧坏内存进程。此外,Node.js采用非阻塞时间循环机制,提高了可伸缩性,使服务器能无缝地处理请求。
从发展的眼光看,Node.js可以很好地支持微服务,让程序被划分为更小的部分。Node.js和微服务允许现代应用程序根据需求进行伸缩,帮助公司使用更少的资源实现更高的性能。
容易学习和快速上手
Javascript是WEB开发人员社区中最流行、使用最广泛的编程语言之一,适应和学习Node.js对于WEB开发者而言非常轻松,编写代码所需的时间更少。根据Node.js 2016年用户调查4,Javascript是最受欢迎的前端开发语言,学习和使用Node.js需要的时间和经历更少。根据StackOverflow最近的一项调查,参与投票的专业开发人员中有惊人的49.9%选择Node.js作为最常用的技术。
Node.js 的不足
- 在处理复杂的计算任务时性能下降:当Node.js事件循环中接收到相当大的CPU驱动的任务时,它会使用动用全部的CPU资源去完成之。(可以用其他语言完成Node.js不擅长的复杂计算。)
- API不稳定导致沉重的代码更迭开销:Node.js经常不向下兼容,当更新到新版本时,需要进行大幅度的改动。(Node.js是比较新的语言,仍然在蓬勃发展中。)
- 异步编程导致代码难以维护:四个字——回调地狱(callback hell)。(注:现在已经被Promise解决,但在没有出现Promise前一些库可能会出现这种问题,建议用较新的、长期维护的库。)
- 缺乏库的支持可能影响代码质量:NPM上有很多低质量和烂尾的库,并且缺乏相应的文档,因此可能导致产品的代码混乱和不规范。
Footnotes
- insights.stackoverflow.com/survey/2020 ↩
- hackernoon.com/how-netflix… ↩
- www.simform.com/companies-u… ↩
- nodejs.org/static/docu… ↩
本文转载自: 掘金