简介
Node.js 是一个基于 Chrome V8 引擎的 javaScript 运行环境
特点
- 异步(非阻塞)的I/O(I/O线程池)
I/O文件、数据的操作:input写 output读
同步阻塞的I/O(一般在CSS应用)
I/O线程池:多个线程待命,无需频繁创建销毁线程,Node有线程池 - 特别适合于I/O 密集型应用(相对于传统java服务器)
频繁操作I/O - 事件循环机制
- 单线程(成也单线程,败也单线程)
如果想实现异步,就必须有自己的“事件循环模型”(浏览器管理模块处理回调:DOM时间管理模块、Ajax请求管理模块、定时器管理模块) - 跨平台
Win、macOS、Linux、Docker
缺点
- 回调函数嵌套造成的回调地狱
- 单线程处理不好CPU密集型任务
web交互模型
stateDiagram-v2
【客户端】 --> 请求
请求 --> 【服务器端(单/多线程)】
【客户端】 --> 响应
响应 --> 【服务器端(单/多线程)】
【服务器端(单/多线程)】 --> I/O操作
I/O操作 --> 【数据库】
【数据库】 --> I/O操作
I/O操作 --> 【服务器端(单/多线程)】