nodejs有哪些优点和缺点

发布网友 发布时间:2022-04-20 08:04

我来回答

2个回答

懂视网 时间:2022-05-14 20:21

本篇文章介绍的是关于node.js的4大优点还有选择node.js四点理由,都是node.js的好处,当然有好处肯定有不好的地方,文章也介绍了node.js的五点缺点。让我们一起来看下吧

首先我们先来介绍下node.js的优势:

从我个人使用体会来说,Node共有4大优势:

1.Nodejs基于Javascript语言,不用再单独新学一门陌生的语言,从而减低了学习的门槛。同时,Javascript语言在Web前端开发中至 关重要,特别HTML5的应用必须要使用,所以前后台统一语言,不仅可以实现程序员的全栈开发,还可以统一公共类库,代码标准化。单凭这一 点,Nodejs就已经赢得市场的青睐了。

2.Nodejs并没有重新开发运行时环境,而是选择了目前最快的浏览器内核V8做为执行引擎,保证了Nodejs的性能和稳定性。

4.Nodejs的社区在壮大,不仅包的数量在快速增加,而且包的质量也要明显好于其他语言的。很多明星级的包,都是简单而灵巧的,为了开发者的使用习惯而设 计。我最常用到的工具包,如socket.io, moment.js, underscore.js, async.js, express.js, bower.js, grunt.js, forever.js…,确实在改变我以前的编程习惯。(想知道更多就到PHP中文网node.js视频教程栏目,看视频也能学习)

当然,node.js的优势肯定不止这么一点,我们在这就不多追究了,要是大家有更好的优势可以在下方留言

选择Nodejs的理由,可以归纳为以下4点:

动态语言:开发效率非常高,并有能力构建复杂系统,如ql.io。

性能和I/O负载:Nodejs非常好的解决了IO密集的问题,通过异步IO来实现。

连接的内存开销:每个Node.js进程可以支持超过12万活跃的连接,每个连接消耗大约2K的内存。

操作性:实现了Nodejs对于内存堆栈的监控系统。

node.js的优点我们说了这么多,那它有没有缺点呢?

答案是肯定的,不然为什么火不起来呢。

我们来看看node.js的缺点:

node.js的缺点也就是nodejs不适合的领域

每一种语言或平台都有不擅长领域,对于Nodejs来说最不擅长的领域在于CPU和内存的编程操作。

1.计算密集型应用,让Javascript和C去拼计算性能,估计是不可能赢的。

2.内存控制,让Javascript和Java比较复杂数据类型定义,也是很困难的。因为Javascript的面向对象是基于JSON的,而Java是直接使用内存结构。所以,通过JSON序列化和反序列的过程控制内存,Javascript就已经输了。

3.大内存的应用,由于V8引擎有内存设计的限制,32位环境中最大堆是1G,64位环境中最大堆也不到2G,如果要一次读入10G数据,对于Nodejs来说也无法实现。

4.静态服务器,虽然Nodejs的优势在IO密集集应用,但是和Nginx的处理静态资源还是有很大的差距。

5.不需要异步的应用:比如系统管理,自行化脚本等,还是Python更顺手,Nodejs的异步调用可能会给编程带来一些麻烦。

热心网友 时间:2022-05-14 17:29

一、说的最多的问题:生态。fibjs 作为新兴的开发框架,生态必定会是原始的。并且因为*了 nodejs 的范式,所以也不太能直接借用 npm 的生态。虽然很多 npm 组件其实是可以直接使用的,但是更多人需要的 web/db/io 相关组件一概不可用。没有英文文档,在把 fibjs 推向国外社区上乏力,也进一步*了生态的发展。
二、fiber 相比 callback 而言的唯一缺点是堆栈内存占用。golang 采取增长堆栈的方式解决了这个问题。因为涉及到 v8 的实现,fibjs 目前没有好的解决方案。针对这个问题,fibjs 实际上并不是完全的 fiber,等待时间较长的模块,fibjs 仍然采取的是 callback 的设计。比如 web server 的处理 handler。这样一来,fiber 的数量便不会因为连接的暴涨而增加太多。一个网站同时 1万个连接,每秒请求可能只有 500,每个请求 100ms,同时处理的请求也才 50 个而已,而 fibjs 发起万级 fiber 毫无压力。这样的数量级根本没有到需要考虑内存的程度。
三、fibjs 仍比较年轻,没有经过更多应用的检验,很多组件甚至在孢子社区内部也没有实用过。以 ssl 为例,最近公司内部在应用的时候便发生了连接一些网站证书验证问题。即便使用过的组件,也会存在设计不合理的问题。这些都是需要社区的支持,一起验证、建议和改进的。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com