本文面向刚接触 Node.js 生态的开发者,介绍了 Node.js 是什么、npm 的作用、nvm 的作用,并通过类比 Java 的 Maven/Gradle、pom.xml、JDK 版本管理等工具,帮助你快速理解它们之间的区别与联系。
1. Node.js 是什么?
Node.js 是一个基于 V8 引擎 的 JavaScript 运行时环境。
它让 JavaScript 不仅能在浏览器中运行,还能在 服务器端、命令行、桌面应用、物联网设备 上运行。
1.1 特点
-
基于 V8 引擎:Node.js 内部用的是 Google Chrome 的 V8 JavaScript 引擎,性能高、执行快。
-
事件驱动 + 非阻塞 I/O:Node.js 使用异步 I/O(输入输出),适合处理高并发请求。
-
单线程 + 事件循环:Node.js 运行在单线程上,但通过事件循环机制处理大量并发请求。
-
生态丰富,自带 npm(Node Package Manager) 包管理工具,其中有丰富的第三方库和模块,可以用来扩展功能和加速开发。。
1.2 常见用途
-
Web 后端开发:用 Express、Koa、NestJS 搭建网站和 API。
-
前端工具链:webpack、vite、babel、eslint 等构建工具都是基于 Node.js。
-
实时应用:聊天室、在线游戏、协作编辑。
-
桌面应用:Electron(VS Code 就是用 Node.js + Electron 开发的)。
-
脚本与自动化工具:写命令行工具、数据处理脚本。
2. npm 是什么?
npm 全称 Node Package Manager,是 Node.js 的包管理工具。 可以理解为 Java 的 Maven。
2.1 作用
-
安装第三方库,类似于 Java 里的 Maven、Gradle。
npm install express //下载依赖 npm install -g npm //升级npm npm cache clean --force //清理缓存 -
管理依赖和版本(通过
package.json)。- 自动生成
package.json文件,记录项目用到的依赖及版本。 -
npm install会根据这个文件一次性安装所有依赖。
- 自动生成
-
发布和共享包(npm registry 仓库)。
-
开发者可以把自己的代码打包发布到 npm 官方仓库,供全球其他人使用。
例如
lodash、react、vue都是通过 npm 分发的。
-
-
脚本管理(在
package.json的scripts中定义命令)"scripts": { "start": "node app.js", "dev": "nodemon app.js" }
2.2 npm vs maven
| Java 世界 | Node.js 世界 | 作用 |
|---|---|---|
| Maven / Gradle | npm / yarn / pnpm | 包管理工具,用来下载、管理依赖包 |
| pom.xml | package.json | 依赖与项目描述文件,记录依赖、版本、构建信息、脚本等 |
| Maven Central 仓库 | npm registry | 中央仓库 |
| mvn install | npm install | 下载依赖并放到本地 |
| mvn clean package | npm run build | 构建打包(脚本可自定义) |
Maven 偏向 Java 项目:依赖都是 jar 包,最终生成 war/jar。
npm 更通用:不仅能下载运行时依赖(比如 express),也能下载构建工具(比如 webpack、vite)。
package.json 功能更丰富:除了依赖外,还能配置项目脚本(相当于把一些常用命令封装进去)。
2.3 切换镜像(❗❗❗)
前因:npm默认提供的官方源:https://registry.npmjs.org/,由于服务器在国外,在国内访问可能 速度慢或经常超时。可以使用国内的淘宝镜像来提高访问速度。
2.3.1 临时使用淘宝镜像
- 仅对当前命令有效,不会影响其他 npm 安装。
npm install express --registry=https://registry.npmmirror.***/
2.3.2 永久使用淘宝镜像
-
设置淘宝镜像:
npm config set registry https://registry.npmmirror.***/ -
查看配置是否生效:
npm config get registry //输出:https://registry.npmmirror.***/ -
恢复官方源:
npm config set registry https://registry.npmjs.org/
2.3.4 安装***pm(可选)
***pm 是淘宝 NPM 镜像提供的 命令行工具,用法类似 npm,速度更快,且安装后不影响原生的npm使用。
npm install -g ***pm --registry=https://registry.npmmirror.***/
***pm install express
3. nvm 是什么?
nvm 全称 Node Version Manager,是 Node.js 的版本管理工具。
3.1 作用
-
安装和切换不同版本的 Node.js:
nvm install 16 nvm use 16 nvm install 18 nvm use 18 -
解决不同项目对 Node.js 版本的冲突。
-
快速升级或降级 Node.js。
3.2 nvm vs npm
- npm:管理 包(package)
- nvm:管理 Node.js 运行时版本
4. 总结:生态定位
| 工具 | 对应 Java 工具 | 作用 | 查看版本 |
|---|---|---|---|
| Node.js | JDK | 提供 JavaScript 运行环境 | node -v |
| nvm | SDKMAN / jEnv | 管理 Node.js 版本 | nvm -v |
| npm | Maven / Gradle | 管理依赖包和项目构建 | npm -v |
📌 一句话总结:
- Node.js:运行环境
- npm:包管理工具
- nvm:版本管理工具