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 应用能力

的大门。

更多推荐