Node.js与前端开发实战学习 | 青训营笔记

134 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第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与前端开发实战》