概述
- Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它让 JavaScript 能够在服务器端运行,实现了"一次编写,到处运行"的跨平台特性。
- 以下是其核心特点和关键信息的简要介绍
- 电子学习资料:
https://pan.quark.cn/s/27af59655929
核心特性
- 事件驱动与非阻塞 I/O
- 采用异步编程模型,无需为每个请求创建新线程,通过事件循环处理并发请求,适合高并发、低延迟的应用场景(如实时聊天、数据流处理)。
- 单线程架构
- 仅使用一个主线程处理所有请求,避免了多线程切换的开销,但需要通过集群(如
cluster
模块)或进程管理工具(如PM2
)实现多核CPU的性能优化。
- 仅使用一个主线程处理所有请求,避免了多线程切换的开销,但需要通过集群(如
- 跨平台支持
- 可运行在 Windows、Linux、macOS 等系统上,便于开发和部署。
- 丰富的生态系统
- 通过包管理器
npm
(Node Package Manager)拥有超过百万级的开源模块,覆盖Web框架、数据库驱动、工具库等场景。
- 通过包管理器
应用场景
- Web 服务器:如使用 Express、Koa 等框架构建API服务。
- 实时应用:如聊天应用、在线游戏的后端,利用 WebSocket 实现双向通信。
- 微服务架构:轻量级的特性适合构建微服务组件。
- 工具开发:如前端构建工具(Webpack、Gulp)、命令行工具(CLI)等。
快速入门示例
以下是一个用 Node.js 搭建简单HTTP服务器的代码:
javascript
const http = require('http');
// 创建服务器
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, Node.js!\n');
});
// 监听端口
const port = 3000;
server.listen(port, () => {
console.log(`服务器运行在 http://localhost:${port}`);
});
通过 node 文件名.js
即可启动服务器,访问 http://localhost:3000
查看输出。
常用框架与工具
- Web 框架:Express(极简框架)、NestJS(基于TypeScript的企业级框架)、Next.js(React服务端渲染框架)。
- 工具库 :
axios
:HTTP客户端请求库;Mongoose
:MongoDB数据库驱动;JWT
:JSON Web Token认证工具。
优势与挑战
- 优势 :
- 前后端共用JavaScript,降低学习成本;
- 适合I/O密集型任务(如文件读写、网络请求)。
- 挑战 :
- 单线程下CPU密集型任务易阻塞主线程,需通过子进程(
child_process
)处理; - 回调函数嵌套可能导致"回调地狱",可通过Promise、async/await解决。
- 单线程下CPU密集型任务易阻塞主线程,需通过子进程(
发展现状
Node.js 由 Ryan Dahl 于2009年创建,目前由 OpenJS 基金会维护,最新长期支持版本(LTS)为 Node.js 20.x,广泛应用于企业级项目(如 Netflix、Uber、淘宝等的部分后端服务)。