Nodejs其它知识点
一,Nodejs架构
Nodejs是一个构建在V8引擎(C++编写的)上的JavaScript运行环境。
Nodejs底层框架由三部分组成:
1,Nodejs标准库
这部分是JavaScript编写的,也是我们在使用过程中能调用的API,在源码中lib目录下可以看到。
2,Node bindings
可以理解为一个桥(像JSBridge那样),连接JS和C++,是JavaScript能直接调用C/C++的关键,Node通过这一层将JS传入V8。
3,底层库
- V8:这也是为什么nodejs是用JavaScript编写的原因,为了使用高效的V8引擎;
- Libuv:它为nodejs提供了跨平台、线程池、事件池、异步I/O等能力,Nodejs之所以高效的异步很大归功于Libuv的实现;
- http_parser、OpenSSL等:提供了包括http解析、SSL等其它功能
二,Nodejs执行机制
1,Nodejs是一个单线程,只有一个JS主线程,其它的异步操作还是由线程池完成,将所有的阻塞操作都交给了内部的线程池去实现,本身不进行I/O操作;
2,Nodejs之所以单线程高并发,就是因为libuv层的事件循环机制,和底层线程池的实现;
3,事件驱动 + 主循环
三,Nodejs优缺点及适用场景
优点:I/O密集型处理比较擅长(sql查询请求、文件流操作请求、http请求等)
缺点:不擅长CPU密集型操作(复杂的计算、图片的操作等)
适用场景:RESTful API,请求和响应只需要少量文本,没有大量逻辑处理