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