Node.js学习笔记(一)#Node.js简介

目录

一、Node.js简介

 二、Node.js三大特性

1.单线程

2.非阻塞I/O

3.事件驱动

三、Node.js运行机制

四、Node.js应用场景


一、Node.js简介

Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于ChromeV8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台。

二、Node.js三大特性

1.单线程

因为JavaScript引擎的关系,Node.js默认是单线程的,Node.js采用的是单线程异步非阻塞的模式。Node.js并没有给Javascript执行时创建新线程的能力,无法利用多核资源。

2.非阻塞I/O

Node.js 采用了非阻塞型 I/O 机制,在做 I/O 操作的时候不会造成任何的阻塞,当完成之后,以时间的形式通知执行操作。

3.事件驱动

当进来一个新的请求的时,请求将会被压入一个事件队列中,然后通过一个循环来检测队列中的事件状态变化,如果检测到有状态变化的事件,那么就执行该事件对应的处理代码。

虽然Node.js是单线程,但由于2、3两个特性,仍然拥有高并发的特性。这是由于Node.js中有同步操作和异步操作的区分。同步操作会放入主线程中,而所有的异步操作会放入任务队列,此时不会影响主线程,等待主线程内的任务执行完毕为空,才会去任务队列读取对应的任务,推入主线程执行,Node.js只负责不断的往返调度,并没有进行真正的I/O操作。上述过程的不断重复形成事件循环,从而使得单线程的Node.js拥有高并发特性。

 

三、Node.js运行机制

1.v8引擎解析js脚本

2.解析后的js代码调用Node API

3.libuv库负责Node API的执行,将任务分配给不同线程,形成一个事件循环,以异步的方式将任务结果返回v8引擎

4.v8引擎将结果返回给应用层

四、Node.js应用场景

1.RESTFUL API

2.轻量级应用

3.I/O密集、少量业务逻辑的场景

猜你喜欢

转载自blog.csdn.net/weixin_42214717/article/details/127789502