来,告诉你Node.js究竟是什么?(2)
每个阶段都有一个要执行的回调FIFO队列。虽然每个阶段都以其自己的方式特殊,但通常情况下,当事件循环进入给定阶段时,它将执行特定于该阶段的任何操作,然后在该阶段的队列中执行回调,直到队列耗尽或最大回调数量为止已执行。当队列耗尽或达到回调限制时,事件循环将移至下一阶段,依此类推。 关于事件循环是一个核心点,经常会被面试官考具体执行输出的问题,大家可以看我的这篇文章 跨平台 起初,Node 只能在 Linux 平台上运行。后来随着 Node的发展,微软注意到了它的存在,并投入了一个团队帮助 Node 实现 Windows 平台的兼容,在v0.6.0版本发布时,Node 已经能够直接在 Window 平台运行了。 Node 是基于libuv实现跨平台的。 Node.js的弊端 单线程带来的弊端 Node.js中有一个特点就是单线程,它带来了很多好处,但是它也有弊端,单线程弱点如下。
以上确实是Node的弊端,但是都会有一些对应的解决方案: 弊端1:解决方案
弊端2:解决方案
弊端3:解决方案
说明:child_process与cluster模块我会单独拿一篇文章来讲。 值得开心的是上面这些弊端随着Node的版本更新,和新的api模块出现,好像解决了这些弊端。 调试 用过node的人可能第一时间就会想到debug太难了,没有stack trace,因此调试比较困难。 Node社区中的npm包 Node.js社区有很多包品质良莠不齐、如果你想偷懒而又刚好npm了一个有问题的包你就很麻烦,因为代码是开源的,只能自己调试了。 Node.js的应用场景 介绍了Node.js的特点和弊端,再说一下Node.js的应用场景。 Node.js适合用来开发什么样的应用程序呢? 善于I/O,不善于计算。因为Node.js最擅长的就是任务调度,如果你的业务有很多的 CPU 计算,实际上也相当于这个计算阻塞了这个单线程,就不太适合Node开发,但是也不是没有解决方案,只是说不太适合。 当应用程序需要处理大量并发的I/O,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候,Node.js非常适合。Node.js也非常适合与websocket配合,开发长连接的实时交互应用程序。 具体场景可以表现为如下:
哪些大公司在用
(编辑:ASP站长网) |