news 2026/6/21 12:50:08

《Node.js 超详细教程:从入门到高级实战,npm、Express、面试题全解析》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《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 工具开发

例如:

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 安装

推荐:

brewinstallnode

Linux 安装

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

退出:

.exit

2. 运行 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 __filename

process

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--force

npx

直接运行包:

npx create-vite

查看全局包

npmlist-g--depth=0

查看依赖树

npmlist

二十二、Node.js 开发神器

nodemon

文件变化自动重启。

安装:

npmi nodemon-D

启动:

npx nodemon app.js

concurrently

同时运行多个命令。


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 mysql2

MongoDB

npmi mongoose

二十七、环境变量

.env 文件

PORT=3000

dotenv

npmi dotenv

二十八、Node.js 调试

console.log

最基础。


debugger

debugger

VSCode 调试

推荐直接 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.0

scripts

脚本命令。

{"scripts":{"dev":"node app.js"}}

运行:

npmrun dev

dependencies

生产依赖。


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.com

2. node_modules 删除不了

Windows 常见。

解决:

npx rimraf node_modules

3. npm ERR! code ERESOLVE

依赖冲突。

解决:

npminstall--legacy-peer-deps

或者:

npminstall--force

4. 端口占用

错误:

EADDRINUSE

解决:

Windows:

netstat-ano|findstr3000

结束进程:

taskkill /PID 进程ID /F

5. node 不是内部命令

原因:

环境变量没配置。

解决:

重新安装 Node.js。

勾选 PATH。


6. 权限问题

Linux/Mac:

EACCES permission denied

解决:

sudonpminstall

或者使用 nvm。


7. package-lock.json 冲突

解决:

rm-rfnode_modulesrmpackage-lock.jsonnpminstall

8. 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 mysql2

15. JWT 登录流程?

流程:

  • 登录
  • 服务端生成 token
  • 前端保存 token
  • 请求携带 token
  • 服务端校验

四十、总结

Node.js 是现代前端工程师必须掌握的重要技术之一。

它不仅是:

  • 后端技术

更是:

  • 前端工程化核心
  • AI 工具链核心
  • 全栈开发核心

对于前端开发者来说:

掌握 Node.js 后,你会真正打开:

  • 工程化能力
  • 后端能力
  • 架构能力
  • 全栈能力
  • AI 应用能力

的大门。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 13:59:24

三步快速搭建eLabFTW:科研实验室的现代化数据管理平台

三步快速搭建eLabFTW:科研实验室的现代化数据管理平台 【免费下载链接】elabftw :notebook: eLabFTW is the most popular open source electronic lab notebook for research labs. 项目地址: https://gitcode.com/gh_mirrors/el/elabftw eLabFTW作为最受欢…

作者头像 李华
网站建设 2026/5/20 13:57:12

5分钟快速上手:技术分析可视化插件的完整实战指南

5分钟快速上手:技术分析可视化插件的完整实战指南 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 你是否曾为复杂的K线分析感到困惑?面对密密麻麻的图表数据,如何快速…

作者头像 李华
网站建设 2026/5/20 13:55:06

Mac 开发者新机配置:从零到一搭建 JDK21 开发环境

1. 新机开箱:为什么选择JDK21? 刚拿到新Mac的开发者们,第一件事可能就是配置开发环境。作为Java开发者,JDK的选择至关重要。JDK21作为最新的长期支持版本(LTS),不仅带来了ZGC垃圾回收器的生产环…

作者头像 李华
网站建设 2026/5/20 13:54:04

三星欧洲市场逆袭分析:从产品组合到渠道策略的竞争逻辑

1. 市场格局的“冰与火之歌”:从一份出货量报告说起 最近翻看一份2019年第二季度欧洲智能手机市场的出货量报告,4510万台这个数字背后,远不止是简单的销量统计。特别是看到三星市场份额“大幅跃升”这个描述,让我这个在消费电子圈…

作者头像 李华
网站建设 2026/5/20 13:51:02

从零构建TransUNet:PyTorch实战混合架构医学图像分割

1. 医学图像分割与TransUNet的独特价值 医学图像分割是计算机视觉在医疗领域最重要的应用之一。我在处理CT、MRI等医学影像时发现,传统方法往往难以应对组织边界模糊、病灶形态多变等挑战。TransUNet作为早期将Transformer引入医学图像分割的混合架构,其…

作者头像 李华