Node.js 让 JavaScript 突破了浏览器限制,可以直接在操作系统上运行,实现服务器搭建、文件操作和数据库读写。本文为您快速梳理其核心工作流与常用概念。

一、 运行环境与模块化 (CommonJS)

Node.js 不是一门新语言,而是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它移除了前端的 DOM/BOM,新增了 fshttp 等系统级 API,并采用事件驱动和非阻塞 I/O 模型,极其擅长处理高并发网络应用。

为了避免代码臃肿和全局变量污染,Node.js 默认遵循 CommonJS 模块化规范。每个文件都是一个独立的封闭作用域,开发者可以通过 module.exports 将内部的函数或变量公开,在其他文件里使用 require() 即可按路径引入并调用。Node.js 还内置了缓存机制,确保多次引入同一模块时只执行一次,极大提升了运行效率。

二、 包管理机制 (npm 与 pnpm)

在实际开发中,我们通常通过 npm 来下载和管理开源社区的第三方包。项目的核心配置都记录在 package.json 蓝图文件中,其中 dependencies 存放生产环境必备的核心包,而 devDependencies 存放打包上线时会被剔除的开发辅助工具。下载的包会统一存放在庞大的 node_modules 文件夹里,配合版本锁确保多端运行环境的一致性。

为了解决传统 npm 带来的“幽灵依赖”(可越权调用未声明的底层包)和“依赖分身”(多版本导致重复下载)问题,现代项目多采用 pnpm。pnpm 采用了“全局存储 + 软硬链接”的底层架构:所有包在电脑硬盘上只存一份,项目中仅通过系统链接进行调用。这不仅极大地释放了磁盘空间,实现了秒级的安装速度,还通过严格的软链机制彻底封杀了幽灵依赖。

三、 核心命令速查 (日常开发必备)

npm 核心命令

# ==========================================
# npm 高频核心命令速查表 (日常开发必备)
# ==========================================

# 1. 项目初始化阶段
npm init            # 交互式初始化项目,引导你生成项目的总控蓝图 package.json
npm init -y         # 极速初始化,跳过所有提问,直接使用默认配置一键生成 package.json

# 2. 环境复原阶段 (拉取开源项目或团队代码后的第一步)
npm install         # 业界习惯简写为 npm i。自动读取 package.json,一键下载并还原所有依赖环境

# 3. 引入与卸载“乐高积木”
npm i dayjs         # 引入常规第三方包(如 dayjs),自动登记为生产环境依赖 (dependencies)
npm i eslint -D     # 引入开发辅助工具(如 eslint),自动登记为开发环境依赖 (devDependencies)
npm i -g nodemon    # 全局安装命令行工具(如 nodemon),安装后在电脑任何目录下都能直接使用
npm uninstall dayjs # 卸载指定的包,并极度干净地从 package.json 记录中将其彻底抹除

# 4. 自动化脚本执行
npm run dev         # 执行 package.json 内 scripts 字段定义的 "dev" 命令 (通常用于启动本地开发环境)
npm run build       # 执行 scripts 字段定义的 "build" 命令 (通常用于项目上线前的代码打包编译)

# 5. 临时调用与局部执行 (npx 现代最佳实践)
npx create-react-app my-app # 临时下载并执行脚手架创建项目,用完即焚,绝对不污染电脑的全局环境
npx nodemon                 # 优先去当前项目的 node_modules 里寻找并运行局部的 nodemon,避免全局版本冲突

pnpm 核心命令

# ==========================================
# pnpm 核心命令速查表 (与 npm 对标)
# ==========================================

# 1. 环境复原阶段 (对标 npm install)
pnpm install       # 简写为 pnpm i。读取蓝图,神速还原 node_modules 结构

# 2. 引入“乐高积木” (注意语义的进化:从 install 变成了 add)
# pnpm 认为,“安装(install)”是针对整个项目的,而“添加(add)”才是针对某个具体的包
pnpm add dayjs     # (对标 npm i dayjs) 添加业务依赖到 dependencies
pnpm add eslint -D # (对标 npm i eslint -D) 添加开发辅助工具到 devDependencies

# 3. 卸载不需要的包
pnpm remove dayjs  # (对标 npm uninstall dayjs) 卸载包并干净地抹除 package.json 里的记录

# 4. 自动化脚本执行 (完全一致)
pnpm run dev       # (对标 npm run dev) 执行 package.json 里的自定义启动命令
pnpm run build     # (对标 npm run build) 执行打包命令
# 偷懒小技巧:对于自定义命令,pnpm 甚至允许你省略 run,直接敲 pnpm dev 即可运行!

# 5. 临时调用与局部执行 (对标 npx)
pnpm dlx create-react-app my-app # (对标 npx) 临时下载并执行脚手架,用完即焚

四、 核心命令速查 (表格版)

4.1 npm 核心命令

执行场景 命令指令 核心作用说明
初始化项目 npm init 交互式生成项目蓝图 package.json
极速初始化 npm init -y 跳过提问,使用默认配置一键生成 package.json
一键环境复原 npm installnpm i 读取蓝图,从云端全量下载并还原所有依赖包
安装生产依赖 npm i <包名> 下载包,并自动登记到 dependencies (如 axios)
安装开发依赖 npm i <包名> -D 下载包,并自动登记到 devDependencies (如 eslint)
全局安装 npm i -g <包名> 安装到电脑系统层级,任何终端路径均可直接使用
卸载/删除包 npm uninstall <包名> 删除文件,并同步抹除 package.json 中的历史记录
运行自动化脚本 npm run <脚本名> 执行 package.jsonscripts 字段定义的快捷别名命令
临时调用工具 npx <命令> 临时下载执行(用完即焚),或优先调用局部安装的工具

4.2 pnpm 核心命令

执行场景 pnpm 新指令 对标的旧 npm 指令
一键环境复原 pnpm installpnpm i npm install
添加生产依赖 pnpm add <包名> npm i <包名>
添加开发依赖 pnpm add <包名> -D npm i <包名> -D
卸载/删除包 pnpm remove <包名> npm uninstall <包名>
运行自动化脚本 pnpm run <脚本名> npm run <脚本名>
极限偷懒运行 pnpm <脚本名> (pnpm 特供,可直接省略 run 单词)
临时调用工具 pnpm dlx <命令> npx <命令>