《Node.js 超详细教程:从入门到高级实战,npm、Express、面试题全解析》
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 工具开发
例如:
npm create 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 安装
推荐:
brew install node
Linux 安装
Ubuntu:
sudo apt install nodejs
sudo apt install npm
六、验证安装
node -v
npm -v
示例:
v22.1.0
10.8.0
七、Node.js 核心组成
1. V8 引擎
负责执行 JavaScript。
2. libuv
负责:
- 事件循环
- 文件系统
- 网络
- 异步
3. npm
Node.js 包管理器。
八、Node.js 运行方式
1. REPL 模式
node
进入交互环境:
> 1 + 1
2
退出:
.exit
2. 运行 JS 文件
创建:
console.log("Hello Node")
执行:
node app.js
九、Node.js 模块系统
CommonJS
Node 默认模块系统。
导出
module.exports = {
name: "Tom"
}
导入
const user = require("./user")
ES Module(现代推荐)
开启
package.json:
{
"type": "module"
}
导出
export const name = "Tom"
导入
import { name } from "./user.js"
十、Node.js 全局对象
常见全局对象
console
process
Buffer
global
__dirname
__filename
process
console.log(process.platform)
console.log(process.cwd())
十一、文件系统 fs 模块
导入
const fs = require("fs")
读取文件
fs.readFile("test.txt", "utf-8", (err, data) => {
console.log(data)
})
写入文件
fs.writeFile("demo.txt", "hello", () => {})
Promise 版本
const fs = require("fs/promises")
const data = await fs.readFile("a.txt")
十二、路径模块 path
const path = require("path")
拼接路径
path.join(__dirname, "src", "app.js")
获取扩展名
path.extname("demo.js")
十三、HTTP 模块
创建服务器
const http = require("http")
const server = http.createServer((req, res) => {
res.end("Hello Node")
})
server.listen(3000)
访问:
http://localhost:3000
十四、Node.js 异步机制
同步
const data = 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
async function test() {
const data = await getData()
}
现代 Node.js 推荐。
十七、Buffer
Node.js 处理二进制核心。
创建 Buffer
const buf = Buffer.from("hello")
转字符串
buf.toString()
十八、Stream 流
Node.js 高频重点。
适合:
- 大文件
- 视频
- 文件上传
读取流
const rs = fs.createReadStream("big.mp4")
写入流
const ws = fs.createWriteStream("copy.mp4")
管道
rs.pipe(ws)
十九、npm 包管理器
npm 是 Node.js 生态核心。
初始化项目
npm init -y
安装依赖
npm install axios
简写:
npm i axios
安装开发依赖
npm i vite -D
全局安装
npm i nodemon -g
卸载
npm uninstall axios
二十、package.json 详解
{
"name": "demo",
"version": "1.0.0",
"scripts": {
"dev": "node app.js"
}
}
scripts 命令
npm run dev
二十一、Node.js 常用快捷命令
npm
npm i
npm run dev
npm run build
npm update
npm cache clean --force
npx
直接运行包:
npx create-vite
查看全局包
npm list -g --depth=0
查看依赖树
npm list
二十二、Node.js 开发神器
nodemon
文件变化自动重启。
安装:
npm i nodemon -D
启动:
npx nodemon app.js
concurrently
同时运行多个命令。
cross-env
跨平台环境变量。
二十三、Express 框架
Express 是 Node.js 最经典框架。
安装:
npm i express
基础服务器
const express = require("express")
const app = express()
app.get("/", (req, res) => {
res.send("hello")
})
app.listen(3000)
二十四、Koa 框架
Koa 更现代化。
npm i koa
二十五、NestJS
NestJS 企业级 Node.js 框架。
特点:
- TypeScript
- 模块化
- IOC
- 装饰器
适合大型项目。
二十六、Node.js + 数据库
MySQL
npm i mysql2
MongoDB
npm i mongoose
二十七、环境变量
.env 文件
PORT=3000
dotenv
npm i dotenv
二十八、Node.js 调试
console.log
最基础。
debugger
debugger
VSCode 调试
推荐直接 F5。
二十九、Node.js 性能优化
1. 使用缓存
Redis。
2. 使用 Stream
避免大文件爆内存。
3. PM2
进程管理。
npm i 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 -v
npm -v
三、npm 初始化项目
快速初始化
npm init -y
会自动生成:
{
"name": "demo",
"version": "1.0.0"
}
自定义初始化
npm init
会逐步输入:
- 项目名称
- 版本
- 描述
- 作者
四、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.0
scripts
脚本命令。
{
"scripts": {
"dev": "node app.js"
}
}
运行:
npm run dev
dependencies
生产依赖。
devDependencies
开发依赖。
例如:
- vite
- eslint
- webpack
五、npm 安装依赖详解
安装普通依赖
npm install axios
简写:
npm i axios
安装开发依赖
npm i vite -D
等价:
npm install vite --save-dev
全局安装
npm i nodemon -g
适合:
- CLI 工具
- 全局命令
指定版本安装
npm i vue@3.5.0
安装多个包
npm i vue axios pinia
六、npm 常用命令
安装所有依赖
npm install
删除依赖
npm uninstall axios
更新依赖
npm update
查看全局包
npm list -g --depth=0
查看本地包
npm list
查看 npm 源
npm config get registry
设置淘宝镜像
npm config set registry https://registry.npmmirror.com
清除缓存
npm cache clean --force
七、npx 详细讲解
npx 可以直接执行 npm 包。
例如:
npx create-vite
特点:
- 不需要全局安装
- 自动下载临时运行
- 用完即删
常见场景
创建项目
npx create-react-app demo
执行本地包
npx eslint app.js
八、npm 安装时常见问题
1. npm install 卡死
原因:
- 网络问题
- npm 源问题
- DNS 问题
解决:
npm config set registry https://registry.npmmirror.com
2. node_modules 删除不了
Windows 常见。
解决:
npx rimraf node_modules
3. npm ERR! code ERESOLVE
依赖冲突。
解决:
npm install --legacy-peer-deps
或者:
npm install --force
4. 端口占用
错误:
EADDRINUSE
解决:
Windows:
netstat -ano | findstr 3000
结束进程:
taskkill /PID 进程ID /F
5. node 不是内部命令
原因:
环境变量没配置。
解决:
重新安装 Node.js。
勾选 PATH。
6. 权限问题
Linux/Mac:
EACCES permission denied
解决:
sudo npm install
或者使用 nvm。
7. package-lock.json 冲突
解决:
rm -rf node_modules
rm package-lock.json
npm install
8. npm 速度慢
解决:
npm config set registry 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
import
export
静态分析。
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?
常用:
npm i mysql2
15. JWT 登录流程?
流程:
- 登录
- 服务端生成 token
- 前端保存 token
- 请求携带 token
- 服务端校验
四十、总结
Node.js 是现代前端工程师必须掌握的重要技术之一。
它不仅是:
- 后端技术
更是:
- 前端工程化核心
- AI 工具链核心
- 全栈开发核心
对于前端开发者来说:
掌握 Node.js 后,你会真正打开:
- 工程化能力
- 后端能力
- 架构能力
- 全栈能力
- AI 应用能力
的大门。
更多推荐
所有评论(0)