Node.js 超详细讲解(基础 → 高级 → 项目实战 → 常用命令)
一、什么是 Node.js
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
它让 JavaScript 不再只能运行在浏览器中,还能运行在:
- 服务端
- 本地工具
- CLI 命令行
- 自动化脚本
- 桌面应用
- 微服务
- AI 工具链
Node.js 最大特点:
- 单线程 + 事件循环
- 非阻塞 I/O
- 高并发
- 极强生态(npm)
适合:
- 前端开发
- 全栈开发
- API 服务
- 实时通信
二、Node.js 能做什么
1. Web 后端开发
常见:
- REST API
- 登录系统
- 后台管理
- 文件上传
技术:
- Express
- Koa
- NestJS
2. 前端工程化
很多前端工具底层都是 Node.js:
- Vite
- Webpack
- Rollup
- Babel
- ESLint
3. CLI 工具开发
例如:
npmcreate vite vue create npx本质上都是 Node.js 命令行工具。
4. 实时通信
适合:
- 聊天室
- IM
- WebSocket
- 在线协同编辑
常用:
- Socket.IO
5. AI 与自动化
Node.js 现在也常用于:
- AI API 调用
- 自动化脚本
- 浏览器爬虫
- Puppeteer 自动化
三、Node.js 安装
官方网站
- https://nodejs.org/zh-cn
- https://www.npmjs.com/
四、Node.js 版本介绍
LTS 版本(推荐)
长期支持版本。
适合生产环境。
Current 版本
最新功能版。
适合学习体验。
五、安装 Node.js
Windows 安装
下载安装包:
node-vxx.x.x-x64.msi一路下一步即可。
Mac 安装
推荐:
brewinstallnodeLinux 安装
Ubuntu:
sudoaptinstallnodejssudoaptinstallnpm六、验证安装
node-vnpm-v示例:
v22.1.010.8.0七、Node.js 核心组成
1. V8 引擎
负责执行 JavaScript。
2. libuv
负责:
- 事件循环
- 文件系统
- 网络
- 异步
3. npm
Node.js 包管理器。
八、Node.js 运行方式
1. REPL 模式
node进入交互环境:
>1+12退出:
.exit2. 运行 JS 文件
创建:
console.log("Hello Node")执行:
nodeapp.js九、Node.js 模块系统
CommonJS
Node 默认模块系统。
导出
module.exports={name:"Tom"}导入
constuser=require("./user")ES Module(现代推荐)
开启
package.json:
{"type":"module"}导出
exportconstname="Tom"导入
import{name}from"./user.js"十、Node.js 全局对象
常见全局对象
console process Buffer global __dirname __filenameprocess
console.log(process.platform)console.log(process.cwd())十一、文件系统 fs 模块
导入
constfs=require("fs")读取文件
fs.readFile("test.txt","utf-8",(err,data)=>{console.log(data)})写入文件
fs.writeFile("demo.txt","hello",()=>{})Promise 版本
constfs=require("fs/promises")constdata=awaitfs.readFile("a.txt")十二、路径模块 path
constpath=require("path")拼接路径
path.join(__dirname,"src","app.js")获取扩展名
path.extname("demo.js")十三、HTTP 模块
创建服务器
consthttp=require("http")constserver=http.createServer((req,res)=>{res.end("Hello Node")})server.listen(3000)访问:
http://localhost:3000十四、Node.js 异步机制
同步
constdata=fs.readFileSync("a.txt")阻塞线程。
异步
fs.readFile("a.txt",()=>{})不阻塞。
十五、事件循环 Event Loop
Node.js 核心机制。
流程:
同步代码 ↓ 微任务 ↓ 宏任务 ↓ I/O 回调十六、Promise 与 async/await
Promise
fetchData().then(res=>{}).catch(err=>{})async/await
asyncfunctiontest(){constdata=awaitgetData()}现代 Node.js 推荐。
十七、Buffer
Node.js 处理二进制核心。
创建 Buffer
constbuf=Buffer.from("hello")转字符串
buf.toString()十八、Stream 流
Node.js 高频重点。
适合:
- 大文件
- 视频
- 文件上传
读取流
constrs=fs.createReadStream("big.mp4")写入流
constws=fs.createWriteStream("copy.mp4")管道
rs.pipe(ws)十九、npm 包管理器
npm 是 Node.js 生态核心。
初始化项目
npminit-y安装依赖
npminstallaxios简写:
npmi axios安装开发依赖
npmi vite-D全局安装
npmi nodemon-g卸载
npmuninstall axios二十、package.json 详解
{"name":"demo","version":"1.0.0","scripts":{"dev":"node app.js"}}scripts 命令
npmrun dev二十一、Node.js 常用快捷命令
npm
npminpmrun devnpmrun buildnpmupdatenpmcache clean--forcenpx
直接运行包:
npx create-vite查看全局包
npmlist-g--depth=0查看依赖树
npmlist二十二、Node.js 开发神器
nodemon
文件变化自动重启。
安装:
npmi nodemon-D启动:
npx nodemon app.jsconcurrently
同时运行多个命令。
cross-env
跨平台环境变量。
二十三、Express 框架
Express 是 Node.js 最经典框架。
安装:
npmi express基础服务器
constexpress=require("express")constapp=express()app.get("/",(req,res)=>{res.send("hello")})app.listen(3000)二十四、Koa 框架
Koa 更现代化。
npmi koa二十五、NestJS
NestJS 企业级 Node.js 框架。
特点:
- TypeScript
- 模块化
- IOC
- 装饰器
适合大型项目。
二十六、Node.js + 数据库
MySQL
npmi mysql2MongoDB
npmi mongoose二十七、环境变量
.env 文件
PORT=3000dotenv
npmi dotenv二十八、Node.js 调试
console.log
最基础。
debugger
debuggerVSCode 调试
推荐直接 F5。
二十九、Node.js 性能优化
1. 使用缓存
Redis。
2. 使用 Stream
避免大文件爆内存。
3. PM2
进程管理。
npmi pm2-g启动:
pm2 start app.js三十、Node.js 高级知识
Cluster 集群
多核 CPU。
Worker Threads
多线程。
Child Process
子进程。
TCP/UDP
底层网络。
三十一、Node.js 工程化
ESLint
代码规范。
Prettier
代码格式化。
Husky
Git Hook。
三十二、Node.js 项目结构推荐
project ├── src ├── routes ├── controllers ├── services ├── middlewares ├── utils ├── config ├── app.js └── package.json三十三、Node.js 面试高频题
1. Node.js 是单线程吗?
JavaScript 主线程单线程。
但底层线程池多线程。
2. 什么是事件循环?
Node.js 处理异步任务机制。
3. CommonJS 和 ES Module 区别?
- require vs import
- 同步 vs 静态分析
4. Buffer 和 Stream 区别?
Buffer:
一次性读。
Stream:
边读边处理。
三十四、Node.js 学习路线
第一阶段
基础:
- JS 高级
- 模块化
- npm
第二阶段
Node 核心:
- fs
- path
- http
- stream
第三阶段
框架:
- Express
- Koa
- NestJS
第四阶段
数据库:
- MySQL
- MongoDB
- Redis
第五阶段
高级:
- 微服务
- Docker
- Linux
- 性能优化
三十五、Node.js 官方文档与资源
官方文档
- https://nodejs.org/docs/latest/api/
- https://docs.npmjs.com/
- https://expressjs.com/zh-cn/
- https://koajs.com/
- https://nestjs.com/
学习网站
- https://developer.mozilla.org/zh-CN/docs/Learn/Server-side/Express_Nodejs
- https://www.runoob.com/nodejs/nodejs-tutorial.html
- https://nodeschool.io/
三十六、Node.js 未来方向
Node.js 当前非常强势:
- AI
- 全栈
- 微服务
- Serverless
- Electron
- CLI 工具
- 边缘计算
都大量使用 Node.js。
尤其前端工程师学习 Node.js 后:
可以真正进入:
- 全栈开发
- 工程化开发
- AI 应用开发
- 高薪后端岗位
三十七、Node.js 推荐技术栈
初级
- Node.js
- Express
- MySQL
中级
- TypeScript
- NestJS
- Redis
高级
- Docker
- Kubernetes
- 微服务
- RabbitMQ
- GraphQL
三十八、Node.js 常用工具生态
开发工具
- Visual Studio Code
- Postman
- Apifox
数据库工具
- Navicat
- DBeaver
三十九、Node.js 实战项目推荐
新手项目
- Todo API
- 登录系统
- 文件上传
中级项目
- 博客系统
- 电商后台
- IM 聊天
高级项目
- 微服务架构
- 实时协同平台
- AI Chat 应用
四十、npm 超详细讲解
一、什么是 npm
npm(Node Package Manager)是 Node.js 官方包管理器。
作用:
- 安装第三方库
- 管理项目依赖
- 发布自己的包
- 执行脚本命令
- 管理版本
npm 是 Node.js 生态最核心部分之一。
二、npm 与 Node.js 的关系
安装 Node.js 后:
会自动安装:
- node
- npm
验证:
node-vnpm-v三、npm 初始化项目
快速初始化
npminit-y会自动生成:
{"name":"demo","version":"1.0.0"}自定义初始化
npminit会逐步输入:
- 项目名称
- 版本
- 描述
- 作者
四、package.json 详细讲解
{"name":"node-demo","version":"1.0.0","description":"node project","main":"app.js","scripts":{"dev":"node app.js"},"dependencies":{},"devDependencies":{}}name
项目名称。
version
版本号。
格式:
主版本.次版本.修订版本例如:
1.0.0scripts
脚本命令。
{"scripts":{"dev":"node app.js"}}运行:
npmrun devdependencies
生产依赖。
devDependencies
开发依赖。
例如:
- vite
- eslint
- webpack
五、npm 安装依赖详解
安装普通依赖
npminstallaxios简写:
npmi axios安装开发依赖
npmi vite-D等价:
npminstallvite --save-dev全局安装
npmi nodemon-g适合:
- CLI 工具
- 全局命令
指定版本安装
npmi vue@3.5.0安装多个包
npmi vue axios pinia六、npm 常用命令
安装所有依赖
npminstall删除依赖
npmuninstall axios更新依赖
npmupdate查看全局包
npmlist-g--depth=0查看本地包
npmlist查看 npm 源
npmconfig get registry设置淘宝镜像
npmconfigsetregistry https://registry.npmmirror.com清除缓存
npmcache clean--force七、npx 详细讲解
npx 可以直接执行 npm 包。
例如:
npx create-vite特点:
- 不需要全局安装
- 自动下载临时运行
- 用完即删
常见场景
创建项目
npx create-react-app demo执行本地包
npx eslint app.js八、npm 安装时常见问题
1. npm install 卡死
原因:
- 网络问题
- npm 源问题
- DNS 问题
解决:
npmconfigsetregistry https://registry.npmmirror.com2. node_modules 删除不了
Windows 常见。
解决:
npx rimraf node_modules3. npm ERR! code ERESOLVE
依赖冲突。
解决:
npminstall--legacy-peer-deps或者:
npminstall--force4. 端口占用
错误:
EADDRINUSE解决:
Windows:
netstat-ano|findstr3000结束进程:
taskkill /PID 进程ID /F5. node 不是内部命令
原因:
环境变量没配置。
解决:
重新安装 Node.js。
勾选 PATH。
6. 权限问题
Linux/Mac:
EACCES permission denied解决:
sudonpminstall或者使用 nvm。
7. package-lock.json 冲突
解决:
rm-rfnode_modulesrmpackage-lock.jsonnpminstall8. npm 速度慢
解决:
npmconfigsetregistry https://registry.npmmirror.com九、npm 高级知识
package-lock.json
作用:
- 锁定版本
- 保证团队一致
必须提交 Git。
semantic version
^1.2.0 ~1.2.0^ 和 ~ 区别
^
允许次版本更新。
例如:
^1.2.0允许:
1.x.x~
只允许补丁更新。
例如:
~1.2.0允许:
1.2.x十、Node.js 面试高频题(补充版)
1. Node.js 为什么适合高并发?
因为:
- 事件循环
- 非阻塞 I/O
- 异步机制
避免线程频繁切换。
2. 什么是事件循环?
Node.js 通过 Event Loop 处理异步任务。
执行流程:
- 同步代码
- 微任务
- 宏任务
- I/O
3. process.nextTick 和 setTimeout 区别?
process.nextTick
微任务。
优先级更高。
setTimeout
宏任务。
进入 timers 阶段。
4. CommonJS 与 ESModule 区别?
CommonJS
require()module.exports动态加载。
ESModule
importexport静态分析。
Tree Shaking 更好。
5. 什么是 Buffer?
Node.js 处理二进制数据对象。
适合:
- 文件
- 图片
- 视频
- TCP
6. Stream 有什么优势?
边读边处理。
不会一次性占满内存。
适合大文件。
7. Node.js 如何开启多进程?
使用:
- cluster
- child_process
- pm2
8. 什么是中间件?
Express/Koa 请求处理函数。
例如:
- 登录校验
- 日志
- token 验证
9. Express 和 Koa 区别?
Express
简单。
生态成熟。
Koa
洋葱模型。
async/await 更现代。
10. Node.js 如何处理异常?
try/catch
try{}catch(err){}Promise.catch
promise.catch()11. 什么是内存泄漏?
对象无法被 GC 回收。
原因:
- 全局变量
- 定时器
- 闭包
12. Node.js 如何优化性能?
- 使用缓存
- Redis
- Stream
- Cluster
- PM2
- CDN
- gzip
13. 什么是跨域?
浏览器同源策略导致。
Node.js 解决:
res.setHeader('Access-Control-Allow-Origin','*')14. Node.js 如何连接 MySQL?
常用:
npmi mysql215. JWT 登录流程?
流程:
- 登录
- 服务端生成 token
- 前端保存 token
- 请求携带 token
- 服务端校验
四十、总结
Node.js 是现代前端工程师必须掌握的重要技术之一。
它不仅是:
- 后端技术
更是:
- 前端工程化核心
- AI 工具链核心
- 全栈开发核心
对于前端开发者来说:
掌握 Node.js 后,你会真正打开:
- 工程化能力
- 后端能力
- 架构能力
- 全栈能力
- AI 应用能力
的大门。