Nodejs教程
    
    2025-03-27
  
  
    
    3分钟阅读时长
  
  
  
介绍
Node.js 是一个基于 Chrome V8 引擎的开源、跨平台 JavaScript 运行时环境,允许开发者在服务器端使用 JavaScript 构建高性能、可扩展的网络应用。其核心优势在于事件驱动架构和非阻塞 I/O 模型,特别适合处理高并发、实时交互场景。
对比
| 技术 | Node.js | Python | Java | PHP | 
|---|---|---|---|---|
| 性能 | 非阻塞 I/O,适合高并发(如聊天应用) | 同步阻塞,适合 CPU 密集型任务 | 多线程,适合企业级复杂逻辑 | 同步阻塞,适合中小型 Web 应用 | 
| 开发效率 | 前后端统一语言,npm 生态丰富 | 语法简洁,AI 库(如 TensorFlow) | 语法严谨,框架成熟(如 Spring) | 快速搭建 CMS(如 WordPress) | 
| 适用场景 | 实时应用、微服务、边缘计算 | 数据科学、机器学习 | 银行系统、ERP 等大型项目 | 传统 Web 开发、内容管理系统 | 
1.管理node版本: nvm
安装nvm
以下都在linux开发环境下进行
cd $HOME
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
使用
安装nodejs
nvm install 22.14.0
列出可用版本
nvm list-remote
切换并设置默认版本
nvm use --lts
nvm alias default --lts
2.管理依赖: pnpm
为什么选择pnpm
| 功能 | pnpm | Yarn | npm | 
|---|---|---|---|
| 工作空间支持 | ✔️ | ✔️ | ✔️ | 
| 隔离的 node_modules | ✔️ - 默认 | ✔️ | ✔️ | 
| 提升的 node_modules | ✔️ | ✔️ | ✔️ - 默认 | 
| 自动安装对等依赖 | ✔️ | ❌ | ✔️ | 
| Plug’n’Play | ✔️ | ✔️ - 默认 | ❌ | 
| 零安装 | ❌ | ✔️ | ❌ | 
| 修补依赖项 | ✔️ | ✔️ | ❌ | 
| 管理 Node.js 版本 | ✔️ | ❌ | ❌ | 
| 拥有锁文件 | ✔️ - pnpm-lock.yaml | ✔️ - yarn.lock | ✔️ - package-lock.json | 
| 支持覆盖 | ✔️ | ✔️ - 通过 resolutions | ✔️ | 
| 内容可寻址存储 | ✔️ | ❌ | ❌ | 
| 动态包执行 | ✔️ - 通过 pnpm dlx | ✔️ - 通过 yarn dlx | ✔️ - 通过 npx | 
| 副作用缓存 | ✔️ | ❌ | ❌ | 
| 列出许可证 | ✔️ - 通过 pnpm licenses list | ✔️ - 通过插件 | ❌ | 
corepack
corepack是一个nodejs自带的包管理器的管理工具,主要是用来管理诸多的包管理器的。 (PS:前端的包管理器好混乱,还整出来一个管理包管理器的工具🤣)
高版本默认自带corepack
(base) root@pro:~# npm ls -g
/root/.nvm/versions/node/v22.14.0/lib
├── [email protected]
└── [email protected]
安装pnpm
安装之前先全局升级下corepack ,否则会触发签名过时的bug
(base) root@pro:~# npm install --global corepack@latest
changed 1 package in 2s
(base) root@pro:~# npm ls -g
/root/.nvm/versions/node/v22.14.0/lib
├── [email protected]
└── [email protected]
(base) root@pro:~# corepack enable pnpm
(base) root@pro:~# corepack use pnpm@latest
Installing [email protected] in the project...
Already up to date
Done in 294ms using pnpm v10.7.0
使用
| 命令 | 功能说明 | 示例 | 
|---|---|---|
| 基础命令 | ||
| pnpm init | 初始化新项目,生成 package.json 文件。 | pnpm init -y(快速初始化,跳过交互) | 
| pnpm install / pnpm i | 安装项目所有依赖(根据 package.json)。 | pnpm i | 
| pnpm add | 添加依赖到 dependencies。 | pnpm add react | 
| pnpm add -D | 添加依赖到 devDependencies。 | pnpm add -D typescript | 
| pnpm add -g | 全局安装依赖。 | pnpm add -g pnpm | 
| pnpm remove | 移除依赖。 | pnpm remove react | 
| pnpm update | 更新所有依赖到最新版本。 | pnpm update | 
| pnpm update | 更新指定依赖到最新版本。 | pnpm update react | 
| pnpm list | 列出项目依赖树。 | pnpm list | 
| pnpm why | 查看依赖来源及路径。 | pnpm why lodash | 
| 工作区管理 | ||
| pnpm workspace | 管理多项目工作区(Monorepo)。 | pnpm workspace | 
| pnpm -r | 递归执行命令到所有工作区。 | pnpm -r build(构建所有项目) | 
| pnpm –filter | 对指定工作区执行命令。 | pnpm –filter my-package test(运行 my-package 的测试) | 
| pnpm workspace add | 在根工作区安装全局依赖。 | pnpm workspace add react -w | 
| 高级功能 | ||
| pnpm config | 管理 pnpm 配置。 | pnpm config set registry https://registry.npmmirror.com(设置淘宝镜像) | 
| pnpm store prune | 清理未使用的包缓存,释放磁盘空间。 | pnpm store prune | 
| pnpm audit | 安全审计,检查依赖漏洞。 | pnpm audit | 
| pnpm exec | 执行本地或全局命令(类似 npx)。 | pnpm exec eslint | 
| pnpm dlx | 临时安装并运行包(无需全局安装)。 | pnpm dlx create-react-app my-app | 
| pnpm patch | 创建依赖补丁。 | pnpm patch [email protected] | 
| pnpm publish | 发布包到 npm 仓库。 | pnpm publish | 
| 特殊场景 | ||
| pnpm install –offline | 强制离线安装,仅使用本地缓存。 | pnpm install –offline | 
| pnpm install –force | 强制重新安装所有依赖,忽略缓存。 | pnpm install –force | 
| pnpm install –frozen-lockfile | 仅根据 pnpm-lock.yaml 安装,不更新锁文件。 | pnpm install –frozen-lockfile | 
| pnpm import | 从 package-lock.json 或 yarn.lock 导入依赖。 | pnpm import | 
| pnpm rebuild | 重新编译二进制依赖(如原生插件)。 | pnpm rebuild | 
3.管理镜像源: nrm
pnpm add -g nrm
设置 npm 镜像源
nrm use taobao
测速
(base) root@pro:~# nrm test
  npm ---------- 2060 ms
  yarn --------- 1903 ms
  tencent ------ 1362 ms
  cnpm --------- 1240 ms
* taobao ------- 511 ms
  npmMirror ---- 1556 ms (Fetch error, if this is your private registry, please ignore)
  huawei ------- 992 ms
添加/删除自定义镜像源
nrm add myregistry https://my-registry.com
nrm del myregistry