node.js的定义是建构在google V8 engine以及Linux上的一个非阻塞事件驱动IO框架。
特征来讲
1,服务器端js进程
2,用了V8引擎
3,没有阻塞
4,事件驱动
5,采用了通用的js语法
其中3和4是关键。没有阻塞,就是说异步处理,一个http请求过去,不会开辟一个新的线程,而是由主线程接受,然后调用了一个方法,让那个方法去处理该请求,主线程去接受另外的请求,那个方法处理好之后就把结果放入队列中,返回给请求方。这样的话,服务器端就可以无阻塞的处理很多请求,而不用开辟新线程的方式耗费大量服务器端的资源。
其实这个思想并不陌生,在客户端也是经历了由同步刷新到异步刷新的过程,现在随着客户端ajax的普及,终于服务器端也开始了异步处理的革命。
处理流程:
1,你用浏览器访问nodejs服务器上的"/about.html"
2,nodejs服务器接收到你的请求,调用一个函数从磁盘上读取这个文件。
3,这段时间,nodejs webserver在服务后续的web请求。
4,当文件读取完毕,有一个回调函数被插入到nodejs的服务队列中。
5,nodejs webserver运行这个函数,实际上就是渲染(render)了about.html页面返回给你的浏览器。