node.js详解

一、 什么是 Node.js?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建高性能网络应用。

  • Ryan Dahl 于 2009 年发布。
  • 允许你在服务器端使用 JavaScript 编程(以前 JS 只能在浏览器里跑)。
  • 异步 I/O、事件驱动、非阻塞模型,适合处理大量并发连接。

二、 Node.js 的核心组成

组成部分描述
V8 引擎Google Chrome 的 JS 引擎,用于将 JS 编译为机器码。
libuv提供异步 I/O、线程池、事件循环机制的底层库(跨平台 C 代码)。
事件循环(Event Loop)Node.js 的执行模型核心,保证非阻塞异步执行。
Node API封装的系统级 API(文件、网络、进程、定时器等)。
npmNode.js 的包管理工具,全世界最大的开源模块生态。

三、 Node.js 的运行机制(事件循环)

Node.js 使用单线程模型处理异步操作,主要依靠 事件循环(Event Loop)机制

流程图

         ┌────────────────────────────────────┐
         │         Node.js 应用启动           │
         └────────────────────────────────────┘
                          ↓
              初始化事件循环 + 加载脚本
                          ↓
         ┌────┬────┬────┬────┬────┬────┐
         │timers │pending│idle │poll │check│close│
         └────┴────┴────┴────┴────┴────┘
                ↑            ↑
             setTimeout  网络/IO完成

事件循环处理任务的顺序:

  1. timers(定时器)
  2. pending callbacks
  3. idle, prepare
  4. poll(处理 IO)
  5. check(setImmediate()
  6. close callbacks

四、 常见内置模块(无需安装)

模块名功能
fs文件系统操作(读写文件)
http / https创建 Web 服务
path路径处理
urlURL 解析
events实现事件监听器
child_process启动子进程
stream流处理(如大文件)
os系统信息

示例:创建一个 HTTP 服务器

const http = require('http');

const server = http.createServer((req, res) => {
  res.end('Hello Node.js');
});

server.listen(3000, () => console.log('Server running on port 3000'));

五、 应用场景

Node.js 的特点是轻量、高并发、低延迟,适合:

场景说明
高并发接口服务如 RESTful API 网关、BFF 层
WebSocket 实时通信如聊天室、协同编辑、游戏
SSR 服务端渲染与 React/Vue 结合
前端工程构建工具如 webpack、vite(基于 Node.js)
静态文件服务器CDN 边缘服务
命令行工具开发如 npm、yarn、vue-cli 等
轻量爬虫快速抓取网页内容(结合 puppeteer)

六、 npm 包生态

全世界最大的开源模块仓库,超过 200 万个包。

常用模块:

包名功能
expressWeb 框架,快速搭建 API
cors跨域资源共享处理
axiosHTTP 客户端(发请求)
body-parser处理 POST 请求体
sequelizeORM 框架,操作数据库
socket.ioWebSocket 实时通信
nodemon自动重启 Node 服务

七、 Node.js 适合哪些人?

  • 前端开发者:能让你用 JavaScript 写完整项目(前后端)。
  • 初学者:上手快、文档丰富、生态成熟。
  • 后端开发者:适合构建轻量 API、高并发场景。
  • DevOps/全栈开发者:用于自动化工具、构建 CLI、运维脚本。

八、 优缺点总结

优点缺点
单线程异步,适合高并发不适合 CPU 密集型任务
使用 JS,全栈开发方便callback 地狱(可用 async/await)
模块丰富,npm 生态成熟较少原生线程控制支持
学习门槛低,跨平台性好不支持多核并行(需 cluster)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思静鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值