这是我参与「第四届青训营 」笔记创作活动的的第10天
初识Node.js
Node.js是一个开源和跨平台的JavaScript运行时环境。它是几乎任何类型的项目的流行工具。
Node.js在浏览器之外运行V8 JavaScript引擎,这是Google Chrome的核心。这使得 Node.js 的性能非常高。
Node.js在单个进程中运行,而无需为每个请求创建新线程。Node.js在其标准库中提供了一组异步 I/O 基元,可防止 JavaScript 代码阻塞,通常 Node.js 中的库是使用非阻塞范例编写的,这使得阻塞行为成为异常而不是常态。
当 Node.js 执行 I/O 操作(如从网络读取、访问数据库或文件系统)时,Node.js 将在响应返回时恢复操作,而不是阻塞线程并浪费 CPU 。这使得 Node.js能够处理与单个服务器的数千个并发连接,而不会引入管理线程并发的负担,这可能是 bug 的重要来源。
Node.js运行时结构的特点
异步I/O
当Node.js执行I/O操作时,会在响应返回后恢复操作,而不是阻塞线程并占用额外内存等待
单线程
- JS单线程
实际:JS线程+uv线程池+V8任务线程池+V8 Inspector线程 - 优点:不用考虑多线程状态同步问题,也就不需要锁;同时还能比较高效地利用系统资源;
- 缺点:阻塞会产生更多负面影响
解决办法:多进程或多线程
跨平台
- 跨平台(大部分功能、API)
- Node.js跨平台+JS无需编译环境(+Web跨平台+诊断工具跨平台)
=开发成本低(大部分场景无需担心跨平台问题),整体学习成本低
编写Http Server
- 安装Node.js
- Http Server
- Http Client
- Promisfy
- 静态文件
- React SSR
- Debug
- 部署
部署要解决的问题
- 守护进程:当进程退出时,重新拉起
- 多进程:cluster便捷地利用进程
- 记录进程状态,用于诊断
本文内容来源于节点简介.js (nodejs.dev)和今日课程《Node.js与前端开发实战》